@roadmanjs/chat 0.0.45 → 0.0.47

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.
@@ -0,0 +1,22 @@
1
+ import { ChatMessage, ChatMessageType } from '../models/ChatMessage.model';
2
+ import { ChatResType, ContextType } from '../../shared/ContextType';
3
+ export declare const chatTyping: (ctx: ContextType, convoId: string, time: Date) => Promise<boolean>;
4
+ export declare const getConvoOwnerNAuth: (convoId: string, ctx: any) => Promise<{
5
+ owner: string;
6
+ isPublic: boolean;
7
+ }>;
8
+ interface ChatMessageArgs {
9
+ ctx: ContextType;
10
+ convoId: string;
11
+ sort?: string;
12
+ before: Date;
13
+ after: Date;
14
+ limit?: number;
15
+ }
16
+ export declare const chatMessage: (args: ChatMessageArgs) => Promise<{
17
+ items: ChatMessage[];
18
+ hasNext: boolean;
19
+ params: any;
20
+ }>;
21
+ export declare const createChatMessage: (ctx: ContextType, args: ChatMessageType) => Promise<ChatResType>;
22
+ export {};
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.createChatMessage = exports.chatMessage = exports.getConvoOwnerNAuth = exports.chatTyping = void 0;
30
+ const ChatMessage_model_1 = __importStar(require("../models/ChatMessage.model"));
31
+ const couchset_1 = require("@roadmanjs/couchset");
32
+ const _1 = require(".");
33
+ const ChatConvo_model_1 = __importDefault(require("../models/ChatConvo.model"));
34
+ const get_1 = __importDefault(require("lodash/get"));
35
+ const client_graphql_1 = require("@stoqey/client-graphql");
36
+ const identity_1 = __importDefault(require("lodash/identity"));
37
+ const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
38
+ const logs_1 = require("@roadmanjs/logs");
39
+ const pickBy_1 = __importDefault(require("lodash/pickBy"));
40
+ const __1 = require("..");
41
+ const auth_1 = require("@roadmanjs/auth");
42
+ const chatTyping = async (ctx, convoId, time // just to make the client HOT
43
+ ) => {
44
+ const owner = (0, get_1.default)(ctx, 'payload.userId', ''); // loggedIn user
45
+ await (0, _1.updateConvoSubscriptions)({
46
+ sender: owner,
47
+ convoId,
48
+ data: { typing: owner, time },
49
+ context: ctx,
50
+ }); // send a typing subscription
51
+ return true;
52
+ };
53
+ exports.chatTyping = chatTyping;
54
+ const getConvoOwnerNAuth = async (convoId, ctx) => {
55
+ let isPublic = false;
56
+ const authorization = (0, get_1.default)(ctx, 'req.headers.authorization', '');
57
+ const token = authorization.split(' ')[1];
58
+ const [err, convo] = await ChatConvo_model_1.default.pagination({
59
+ where: {
60
+ convoId,
61
+ },
62
+ });
63
+ if (err) {
64
+ throw err;
65
+ }
66
+ if (convo.length) {
67
+ const selectedConvo = convo[0];
68
+ isPublic = selectedConvo.isPublic;
69
+ if (isPublic) {
70
+ return { owner: selectedConvo.owner, isPublic };
71
+ }
72
+ if ((0, isEmpty_1.default)(token)) {
73
+ throw new Error('not authorized');
74
+ }
75
+ // throw error if token is not valid
76
+ const payload = (0, auth_1.verifyAuthToken)(token);
77
+ return { owner: payload.userId, isPublic };
78
+ }
79
+ throw new Error('conversation not found');
80
+ };
81
+ exports.getConvoOwnerNAuth = getConvoOwnerNAuth;
82
+ const chatMessage = async (args) => {
83
+ const { ctx, convoId, before, after, limit: limitArg } = args;
84
+ // TODO add sort, by default it's just new to old
85
+ const bucket = couchset_1.connectionOptions.bucketName;
86
+ const sign = before ? '<=' : '>=';
87
+ const time = new Date(before || after);
88
+ const limit = limitArg || 10;
89
+ const limitPassed = limit + 1;
90
+ const copyParams = (0, pickBy_1.default)({
91
+ convoId,
92
+ before,
93
+ after,
94
+ limit,
95
+ }, identity_1.default);
96
+ try {
97
+ const { owner, isPublic } = await (0, exports.getConvoOwnerNAuth)(convoId, ctx);
98
+ const query = `
99
+ SELECT *
100
+ FROM \`${bucket}\` chat
101
+ LET owner = (SELECT o.* FROM \`${bucket}\` AS o USE KEYS chat.owner),
102
+ attachments = (SELECT m.* FROM \`${bucket}\` AS m USE KEYS chat.attachments)
103
+ WHERE chat._type = "${ChatMessage_model_1.ChatMessageModelName}"
104
+ AND chat.convoId = "${convoId}"
105
+ AND chat.createdAt ${sign} "${time.toISOString()}"
106
+ ORDER BY chat.createdAt DESC
107
+ LIMIT ${limitPassed};
108
+ `;
109
+ const [errorFetching, data = []] = await (0, client_graphql_1.awaitTo)(ChatMessage_model_1.default.customQuery({
110
+ limit: limitPassed,
111
+ query,
112
+ params: copyParams,
113
+ }));
114
+ if (errorFetching) {
115
+ throw errorFetching;
116
+ }
117
+ const [rows = []] = data;
118
+ const hasNext = rows.length > limit;
119
+ if (hasNext) {
120
+ rows.pop(); // remove last element
121
+ }
122
+ const dataToSend = rows.map((d) => {
123
+ const { chat, attachments, owner } = d;
124
+ return ChatMessage_model_1.default.parse(Object.assign(Object.assign({}, chat), { attachments, owner: owner[0] || null }));
125
+ });
126
+ // TODO just add as a queue non-blocking queries
127
+ if (!isPublic) {
128
+ await (0, _1.removeUnreadCount)(owner, convoId);
129
+ }
130
+ return { items: dataToSend, params: copyParams, hasNext };
131
+ }
132
+ catch (error) {
133
+ (0, logs_1.log)('error getting chat messages', error);
134
+ return { items: [], hasNext: false, params: copyParams };
135
+ }
136
+ };
137
+ exports.chatMessage = chatMessage;
138
+ const createChatMessage = async (ctx, args) => {
139
+ const owner = (0, get_1.default)(ctx, 'payload.userId', '');
140
+ try {
141
+ // If updating
142
+ const createdOrUpdate = await (0, couchset_1.createUpdate)(Object.assign({ model: ChatMessage_model_1.default, data: Object.assign({}, args) }, args));
143
+ // Error when creating message
144
+ // update conversation with new lastMessage
145
+ // update message
146
+ if (createdOrUpdate) {
147
+ const message = createdOrUpdate.id;
148
+ const convoId = createdOrUpdate.convoId;
149
+ await (0, __1.updateConvoLastMessage)({
150
+ sender: owner,
151
+ convoId,
152
+ lastMessageId: message,
153
+ }); // update all convos
154
+ await (0, _1.updateConvoSubscriptions)({
155
+ sender: owner,
156
+ convoId,
157
+ data: { message },
158
+ context: ctx,
159
+ });
160
+ return { success: true, data: createdOrUpdate };
161
+ }
162
+ throw new Error('error creating chat message method ');
163
+ }
164
+ catch (err) {
165
+ console.error(err && err.message, err);
166
+ return { success: false, message: err && err.message };
167
+ }
168
+ };
169
+ exports.createChatMessage = createChatMessage;
170
+ //# sourceMappingURL=ChatMessageResolver.methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessageResolver.methods.js","sourceRoot":"","sources":["../../../src/chat/methods/ChatMessageResolver.methods.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { ChatMessage, ChatMessageType, OnChatMessage } from '../models/ChatMessa
3
3
  export declare class ChatMessageResolver {
4
4
  onChatMessage(data: OnChatMessage, owner: string, convoId: string, time: Date): OnChatMessage;
5
5
  chatTyping(ctx: ContextType, convoId: string, time: Date): Promise<boolean>;
6
- chatMessage(ctx: ContextType, convoId: string, before: Date, after: Date, limitArg: any): Promise<{
6
+ chatMessage(ctx: ContextType, convoId: string, before: Date, after: Date, limit: any): Promise<{
7
7
  items: ChatMessage[];
8
8
  hasNext: boolean;
9
9
  params: any;
@@ -1,53 +1,20 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
2
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
23
7
  };
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
8
  var __param = (this && this.__param) || function (paramIndex, decorator) {
32
9
  return function (target, key) { decorator(target, key, paramIndex); }
33
10
  };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
11
  Object.defineProperty(exports, "__esModule", { value: true });
38
12
  exports.ChatMessageResolver = void 0;
39
13
  const couchset_1 = require("couchset");
40
- const client_graphql_1 = require("@stoqey/client-graphql");
41
14
  const ContextType_1 = require("../../shared/ContextType");
42
- const identity_1 = __importDefault(require("lodash/identity"));
43
- const pickBy_1 = __importDefault(require("lodash/pickBy"));
44
- const logs_1 = require("@roadmanjs/logs");
45
- const get_1 = __importDefault(require("lodash/get"));
46
15
  const auth_1 = require("@roadmanjs/auth");
47
- const ChatMessage_model_1 = __importStar(require("../models/ChatMessage.model"));
48
- const couchset_2 = require("@roadmanjs/couchset");
49
- const __1 = require("..");
50
- const methods_1 = require("../methods");
16
+ const ChatMessage_model_1 = require("../models/ChatMessage.model");
17
+ const ChatMessageResolver_methods_1 = require("../methods/ChatMessageResolver.methods");
51
18
  const ChatPagination = (0, ContextType_1.getPagination)(ChatMessage_model_1.ChatMessage);
52
19
  let ChatMessageResolver = class ChatMessageResolver {
53
20
  // TODO subscriptions and auth middleware
@@ -57,99 +24,15 @@ let ChatMessageResolver = class ChatMessageResolver {
57
24
  }
58
25
  async chatTyping(ctx, convoId, time // just to make the client HOT
59
26
  ) {
60
- const owner = (0, get_1.default)(ctx, 'payload.userId', ''); // loggedIn user
61
- await (0, methods_1.updateConvoSubscriptions)({
62
- sender: owner,
63
- convoId,
64
- data: { typing: owner, time },
65
- context: ctx,
66
- }); // send a typing subscription
67
- return true;
27
+ return (0, ChatMessageResolver_methods_1.chatTyping)(ctx, convoId, time);
68
28
  }
69
29
  async chatMessage(ctx, convoId,
70
30
  // @Arg('sort', () => String, {nullable: true}) sortArg?: string,
71
- before, after, limitArg) {
72
- const owner = (0, get_1.default)(ctx, 'payload.userId', '');
73
- // TODO add sort, by default it's just new to old
74
- const bucket = couchset_2.connectionOptions.bucketName;
75
- const sign = before ? '<=' : '>=';
76
- const time = new Date(before || after);
77
- const limit = limitArg || 10;
78
- const limitPassed = limit + 1;
79
- const copyParams = (0, pickBy_1.default)({
80
- convoId,
81
- before,
82
- after,
83
- limit,
84
- }, identity_1.default);
85
- try {
86
- const query = `
87
- SELECT *
88
- FROM \`${bucket}\` chat
89
- LET owner = (SELECT o.* FROM \`${bucket}\` AS o USE KEYS chat.owner),
90
- attachments = (SELECT m.* FROM \`${bucket}\` AS m USE KEYS chat.attachments)
91
- WHERE chat._type = "${ChatMessage_model_1.ChatMessageModelName}"
92
- AND chat.convoId = "${convoId}"
93
- AND chat.createdAt ${sign} "${time.toISOString()}"
94
- ORDER BY chat.createdAt DESC
95
- LIMIT ${limitPassed};
96
- `;
97
- const [errorFetching, data = []] = await (0, client_graphql_1.awaitTo)(ChatMessage_model_1.default.customQuery({
98
- limit: limitPassed,
99
- query,
100
- params: copyParams,
101
- }));
102
- if (errorFetching) {
103
- throw errorFetching;
104
- }
105
- const [rows = []] = data;
106
- const hasNext = rows.length > limit;
107
- if (hasNext) {
108
- rows.pop(); // remove last element
109
- }
110
- const dataToSend = rows.map((d) => {
111
- const { chat, attachments, owner } = d;
112
- return ChatMessage_model_1.default.parse(Object.assign(Object.assign({}, chat), { attachments, owner: owner[0] || null }));
113
- });
114
- // TODO just add as a queue non-blocking queries
115
- await (0, methods_1.removeUnreadCount)(owner, convoId);
116
- return { items: dataToSend, params: copyParams, hasNext };
117
- }
118
- catch (error) {
119
- (0, logs_1.log)('error getting chat messages', error);
120
- return { items: [], hasNext: false, params: copyParams };
121
- }
31
+ before, after, limit) {
32
+ return (0, ChatMessageResolver_methods_1.chatMessage)({ ctx, convoId, before, after, limit });
122
33
  }
123
34
  async createChatMessage(ctx, args) {
124
- const owner = (0, get_1.default)(ctx, 'payload.userId', '');
125
- try {
126
- // If updating
127
- const createdOrUpdate = await (0, couchset_2.createUpdate)(Object.assign({ model: ChatMessage_model_1.default, data: Object.assign({}, args) }, args));
128
- // Error when creating message
129
- // update conversation with new lastMessage
130
- // update message
131
- if (createdOrUpdate) {
132
- const message = createdOrUpdate.id;
133
- const convoId = createdOrUpdate.convoId;
134
- await (0, __1.updateConvoLastMessage)({
135
- sender: owner,
136
- convoId,
137
- lastMessageId: message,
138
- }); // update all convos
139
- await (0, methods_1.updateConvoSubscriptions)({
140
- sender: owner,
141
- convoId,
142
- data: { message },
143
- context: ctx,
144
- });
145
- return { success: true, data: createdOrUpdate };
146
- }
147
- throw new Error('error creating chat message method ');
148
- }
149
- catch (err) {
150
- console.error(err && err.message, err);
151
- return { success: false, message: err && err.message };
152
- }
35
+ return (0, ChatMessageResolver_methods_1.createChatMessage)(ctx, args);
153
36
  }
154
37
  };
155
38
  __decorate([
@@ -171,7 +54,6 @@ __decorate([
171
54
  ], ChatMessageResolver.prototype, "chatTyping", null);
172
55
  __decorate([
173
56
  (0, couchset_1.Query)(() => ChatPagination),
174
- (0, couchset_1.UseMiddleware)(auth_1.isAuth),
175
57
  __param(0, (0, couchset_1.Ctx)()),
176
58
  __param(1, (0, couchset_1.Arg)('convoId', () => String, { nullable: false })),
177
59
  __param(2, (0, couchset_1.Arg)('before', () => Date, { nullable: true })),
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessage.resolver.js","sourceRoot":"","sources":["../../../src/chat/resolvers/ChatMessage.resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAUkB;AAClB,2DAA+C;AAC/C,0DAAiF;AACjF,+DAAuC;AACvC,2DAAmC;AACnC,0CAAoC;AACpC,qDAA8B;AAC9B,0CAAuC;AACvC,iFAKqC;AACrC,kDAAoE;AACpE,0BAA0C;AAC1C,wCAAuE;AAEvE,MAAM,cAAc,GAAG,IAAA,2BAAa,EAAC,+BAAW,CAAC,CAAC;AAG3C,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC5B,yCAAyC;IAMzC,aAAa,CACD,IAAmB,EACoB,KAAa,EACX,OAAe,EACrB,IAAU,CAAC,8BAA8B;;QAEpF,uBAAQ,OAAO,EAAE,IAAI,EAAE,KAAK,IAAK,IAAI,EAAE;IAC3C,CAAC;IAIK,AAAN,KAAK,CAAC,UAAU,CACL,GAAgB,EAC0B,OAAe,EACrB,IAAU,CAAC,8BAA8B;;QAEpF,MAAM,KAAK,GAAG,IAAA,aAAI,EAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB;QAE/D,MAAM,IAAA,kCAAwB,EAAC;YAC3B,MAAM,EAAE,KAAK;YACb,OAAO;YACP,IAAI,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC;YAC3B,OAAO,EAAE,GAAG;SACf,CAAC,CAAC,CAAC,6BAA6B;QAEjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAIK,AAAN,KAAK,CAAC,WAAW,CACN,GAAgB,EAC0B,OAAe;IAChE,kEAAkE;IACrB,MAAY,EACb,KAAW,EACT,QAAQ;QAMtD,MAAM,KAAK,GAAG,IAAA,aAAI,EAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC9C,iDAAiD;QACjD,MAAM,MAAM,GAAG,4BAAiB,CAAC,UAAU,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,QAAQ,IAAI,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;QAE9B,MAAM,UAAU,GAAG,IAAA,gBAAM,EACrB;YACI,OAAO;YACP,MAAM;YACN,KAAK;YACL,KAAK;SACR,EACD,kBAAQ,CACX,CAAC;QAEF,IAAI;YACA,MAAM,KAAK,GAAG;;mBAEP,MAAM;2CACkB,MAAM;qDACI,MAAM;gCAC3B,wCAAoB;gCACpB,OAAO;+BACR,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;;kBAExC,WAAW;OACtB,CAAC;YAEI,MAAM,CAAC,aAAa,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,IAAA,wBAAO,EAC5C,2BAAgB,CAAC,WAAW,CAAM;gBAC9B,KAAK,EAAE,WAAW;gBAClB,KAAK;gBACL,MAAM,EAAE,UAAU;aACrB,CAAC,CACL,CAAC;YAEF,IAAI,aAAa,EAAE;gBACf,MAAM,aAAa,CAAC;aACvB;YAED,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;YAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpC,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,sBAAsB;aACrC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC9B,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAC,GAAG,CAAC,CAAC;gBACrC,OAAO,2BAAgB,CAAC,KAAK,iCACtB,IAAI,KACP,WAAW,EACX,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,IACzB,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,gDAAgD;YAChD,MAAM,IAAA,2BAAiB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAExC,OAAO,EAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAC,CAAC;SAC3D;QAAC,OAAO,KAAK,EAAE;YACZ,IAAA,UAAG,EAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YAC1C,OAAO,EAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAC,CAAC;SAC1D;IACL,CAAC;IAIK,AAAN,KAAK,CAAC,iBAAiB,CACZ,GAAgB,EACgC,IAAqB;QAE5E,MAAM,KAAK,GAAG,IAAA,aAAI,EAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAE9C,IAAI;YACA,cAAc;YACd,MAAM,eAAe,GAAG,MAAM,IAAA,uBAAY,kBACtC,KAAK,EAAE,2BAAgB,EACvB,IAAI,oBACG,IAAI,KAER,IAAI,EACT,CAAC;YAEH,8BAA8B;YAC9B,2CAA2C;YAC3C,iBAAiB;YAEjB,IAAI,eAAe,EAAE;gBACjB,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;gBAExC,MAAM,IAAA,0BAAsB,EAAC;oBACzB,MAAM,EAAE,KAAK;oBACb,OAAO;oBACP,aAAa,EAAE,OAAO;iBACzB,CAAC,CAAC,CAAC,oBAAoB;gBAExB,MAAM,IAAA,kCAAwB,EAAC;oBAC3B,MAAM,EAAE,KAAK;oBACb,OAAO;oBACP,IAAI,EAAE,EAAC,OAAO,EAAC;oBACf,OAAO,EAAE,GAAG;iBACf,CAAC,CAAC;gBAEH,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAC,CAAC;aACjD;YAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SAC1D;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACvC,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,EAAC,CAAC;SACxD;IACL,CAAC;CACJ,CAAA;AArKG;IAAC,IAAA,uBAAY,EAAC,GAAG,EAAE,CAAC,iCAAa,EAAE;QAC/B,MAAM,EAAE,+BAAW,CAAC,IAAI;QACxB,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,EAAE,CACxB,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;KACvE,CAAC;IAEG,WAAA,IAAA,eAAI,GAAE,CAAA;IACN,WAAA,IAAA,cAAG,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAA;IAC7C,WAAA,IAAA,cAAG,EAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAA;IAC/C,WAAA,IAAA,cAAG,EAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;wDAG7C;AAIK;IAFL,IAAA,gBAAK,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC;IACpB,IAAA,wBAAa,EAAC,aAAM,CAAC;IAEjB,WAAA,IAAA,cAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAG,EAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAA;IAC/C,WAAA,IAAA,cAAG,EAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;qDAY7C;AAIK;IAFL,IAAA,gBAAK,EAAC,GAAG,EAAE,CAAC,cAAc,CAAC;IAC3B,IAAA,wBAAa,EAAC,aAAM,CAAC;IAEjB,WAAA,IAAA,cAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAG,EAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAA;IAE/C,WAAA,IAAA,cAAG,EAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;IAC3C,WAAA,IAAA,cAAG,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;IAC1C,WAAA,IAAA,cAAG,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;sDA0EhD;AAIK;IAFL,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,yBAAW,CAAC;IAC3B,IAAA,wBAAa,EAAC,aAAM,CAAC;IAEjB,WAAA,IAAA,cAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAG,EAAC,MAAM,EAAE,GAAG,EAAE,CAAC,mCAAe,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAA;4DA2CzD;AAtKQ,mBAAmB;IAD/B,IAAA,mBAAQ,GAAE;GACE,mBAAmB,CAuK/B;AAvKY,kDAAmB;AAyKhC,kBAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"ChatMessage.resolver.js","sourceRoot":"","sources":["../../../src/chat/resolvers/ChatMessage.resolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roadmanjs/chat",
3
- "version": "0.0.45",
3
+ "version": "0.0.47",
4
4
  "description": " A roadman for chat and groups, using UserType from 'auth'",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -75,7 +75,7 @@
75
75
  "typescript": ">=2.0"
76
76
  },
77
77
  "dependencies": {
78
- "@roadmanjs/auth": "^0.0.20",
78
+ "@roadmanjs/auth": "^0.0.25",
79
79
  "@roadmanjs/couchset": "^0.0.8",
80
80
  "@roadmanjs/firebase-admin": "^0.0.12",
81
81
  "@roadmanjs/logs": "^0.0.1",