@messenger-box/platform-server 0.0.1-alpha.264 → 0.0.1-alpha.266

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.
Files changed (39) hide show
  1. package/lib/config/env-config.js +8 -0
  2. package/lib/config/env-config.js.map +1 -0
  3. package/lib/containers/containers.d.ts +0 -1
  4. package/lib/containers/containers.js +80 -0
  5. package/lib/containers/containers.js.map +1 -0
  6. package/lib/module.js +2 -3
  7. package/lib/module.js.map +1 -1
  8. package/lib/services/channel-service.js +277 -0
  9. package/lib/services/channel-service.js.map +1 -0
  10. package/lib/services/index.d.ts +0 -1
  11. package/lib/services/messenger-notification-service.js +158 -0
  12. package/lib/services/messenger-notification-service.js.map +1 -0
  13. package/lib/services/post-service.js +78 -0
  14. package/lib/services/post-service.js.map +1 -0
  15. package/lib/services/post-thread-service.js +10 -0
  16. package/lib/services/post-thread-service.js.map +1 -0
  17. package/lib/services/reaction-service.js +10 -0
  18. package/lib/services/reaction-service.js.map +1 -0
  19. package/lib/store/models/account-token-store.js +3 -0
  20. package/lib/store/models/account-token-store.js.map +1 -0
  21. package/lib/store/models/channel.js +35 -0
  22. package/lib/store/models/channel.js.map +1 -0
  23. package/lib/store/models/common-options.js +20 -0
  24. package/lib/store/models/common-options.js.map +1 -0
  25. package/lib/store/models/post-thread.js +9 -0
  26. package/lib/store/models/post-thread.js.map +1 -0
  27. package/lib/store/models/post.js +21 -0
  28. package/lib/store/models/post.js.map +1 -0
  29. package/lib/store/models/reaction.js +8 -0
  30. package/lib/store/models/reaction.js.map +1 -0
  31. package/lib/store/repositories/channel-repository.js +12 -0
  32. package/lib/store/repositories/channel-repository.js.map +1 -0
  33. package/lib/store/repositories/post-repository.js +12 -0
  34. package/lib/store/repositories/post-repository.js.map +1 -0
  35. package/lib/store/repositories/post-thread-repository.js +12 -0
  36. package/lib/store/repositories/post-thread-repository.js.map +1 -0
  37. package/lib/store/repositories/reaction-repository.js +11 -0
  38. package/lib/store/repositories/reaction-repository.js.map +1 -0
  39. package/package.json +2 -2
@@ -0,0 +1,8 @@
1
+ import {cleanEnv,num,str}from'envalid';const config = cleanEnv(process.env,
2
+ /* start */
3
+ {
4
+ FILES_TTL: num({ default: 3600, desc: 'TTL for files cache in Seconds' }),
5
+ GRAPHQL_URL: str(),
6
+ MAIL_SEND_DEFAULT_EMAIL: str(),
7
+ APP_NAME: str(),
8
+ } /* end */);export{config};//# sourceMappingURL=env-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-config.js","sources":["../../src/config/env-config.ts"],"sourcesContent":[null],"names":[],"mappings":"6CAEa,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG;AAC1C;AACA;AACI,IAAA,SAAS,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC;IACzE,WAAW,EAAE,GAAG,EAAE;IAClB,uBAAuB,EAAE,GAAG,EAAE;IAC9B,QAAQ,EAAE,GAAG,EAAE;CAClB"}
@@ -5,7 +5,6 @@ import { interfaces } from 'inversify';
5
5
  *
6
6
  * @param settings Settings
7
7
  */
8
- export declare const proxyServiceContainerModule: (settings: any) => interfaces.ContainerModule;
9
8
  /**
10
9
  * Operates external to the Gateway. Usually a broker listen to calls and invoke this service
11
10
  * local to the micro container.
@@ -0,0 +1,80 @@
1
+ import {ContainerModule}from'inversify';import {ChannelService}from'../services/channel-service.js';import {PostService}from'../services/post-service.js';import'../services/post-thread-service.js';import'../services/reaction-service.js';import'../services/messenger-notification-service.js';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';import {ChannelRepository}from'../store/repositories/channel-repository.js';import {PostRepository}from'../store/repositories/post-repository.js';import'../store/repositories/post-thread-repository.js';import'../store/repositories/reaction-repository.js';// import { MessageNotificationTemplateMigration } from '../migrations';
2
+ // import {
3
+ // ChannelProxyService,
4
+ // PostProxyService,
5
+ // PostThreadMicroservice,
6
+ // ReactionMicroservice,
7
+ // MessengerNotificationMicroservice,
8
+ // } from '../services/proxy-services';
9
+ /**
10
+ * Local services and exposed microservices to serve remote connections.
11
+ * Operates within in the Gateway.
12
+ *
13
+ * @param settings Settings
14
+ */
15
+ // export const proxyServiceContainerModule: (settings) => interfaces.ContainerModule = (settings) =>
16
+ // new ContainerModule((bind: interfaces.Bind) => {
17
+ // bind('MongodbMigration')
18
+ // .to(MessageNotificationTemplateMigration)
19
+ // .whenTargetNamed(MessageNotificationTemplateMigration.name);
20
+ // bind(ExtendTokenAccountType.ExtendedTokenAccountService)
21
+ // .to(ExtendedTokenAccountService)
22
+ // .inSingletonScope()
23
+ // .whenTargetIsDefault();
24
+ // bind<IChannelService>(TYPES.ChannelService)
25
+ // .to(ChannelProxyService)
26
+ // .inSingletonScope()
27
+ // .whenTargetNamed(TaggedType.MICROSERVICE);
28
+ // bind<IPostService>(TYPES.PostService)
29
+ // .to(PostProxyService)
30
+ // .inSingletonScope()
31
+ // .whenTargetNamed(TaggedType.MICROSERVICE);
32
+ // bind<IPostThreadService>(TYPES.PostThreadService)
33
+ // .to(PostThreadMicroservice)
34
+ // .inSingletonScope()
35
+ // .whenTargetNamed(TaggedType.MICROSERVICE);
36
+ // bind<IReactionService>(TYPES.ReactionService)
37
+ // .to(ReactionMicroservice)
38
+ // .inSingletonScope()
39
+ // .whenTargetNamed(TaggedType.MICROSERVICE);
40
+ // bind<IMessengerNotificationService>(TYPES.MessengerNotificationService)
41
+ // .to(MessengerNotificationMicroservice)
42
+ // .inSingletonScope()
43
+ // .whenTargetNamed(TaggedType.MICROSERVICE);
44
+ // });
45
+ /**
46
+ * Operates external to the Gateway. Usually a broker listen to calls and invoke this service
47
+ * local to the micro container.
48
+ *
49
+ * @param settings Settings
50
+ */
51
+ const serviceContainerModule = (settings) => new ContainerModule((bind) => {
52
+ // bind(ExtendTokenAccountType.ExtendedTokenAccountService)
53
+ // .to(ExtendedTokenAccountService)
54
+ // .inSingletonScope()
55
+ // .whenTargetIsDefault();
56
+ bind(TYPES.ChannelRepository)
57
+ .to(ChannelRepository)
58
+ .inSingletonScope()
59
+ .whenTargetIsDefault();
60
+ bind(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetIsDefault();
61
+ // bind<IPostThreadRepository>(TYPES.PostThreadRepository)
62
+ // .to(PostThreadRepository)
63
+ // .inSingletonScope()
64
+ // .whenTargetIsDefault();
65
+ // bind<IReactionRepository>(TYPES.ReactionRepository)
66
+ // .to(ReactionRepository)
67
+ // .inSingletonScope()
68
+ // .whenTargetIsDefault();
69
+ bind(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetIsDefault();
70
+ bind(TYPES.PostService).to(PostService).inSingletonScope().whenTargetIsDefault();
71
+ // bind<IPostThreadService>(TYPES.PostThreadService)
72
+ // .to(PostThreadService)
73
+ // .inSingletonScope()
74
+ // .whenTargetIsDefault();
75
+ // bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetIsDefault();
76
+ // bind<IMessengerNotificationService>(TYPES.MessengerNotificationService)
77
+ // .to(MessengerNotificationService)
78
+ // .inSingletonScope()
79
+ // .whenTargetIsDefault();
80
+ });export{serviceContainerModule};//# sourceMappingURL=containers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.js","sources":["../../src/containers/containers.ts"],"sourcesContent":[null],"names":[],"mappings":"6nBAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;AAKG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;AAKG;AACI,MAAM,sBAAsB,GAA6C,CAAC,QAAQ,KACrF,IAAI,eAAe,CAAC,CAAC,IAAqB,KAAI;;;;;AAK1C,IAAA,IAAI,CAAqB,KAAK,CAAC,iBAAiB,CAAC;SAC5C,EAAE,CAAC,iBAAiB,CAAC;AACrB,SAAA,gBAAgB,EAAE;AAClB,SAAA,mBAAmB,EAAE,CAAC;AAC3B,IAAA,IAAI,CAAkB,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;;;;;;;;;AAYxG,IAAA,IAAI,CAAkB,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;AAExG,IAAA,IAAI,CAAe,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;;;;;;;;;;AAYnG,CAAC"}
package/lib/module.js CHANGED
@@ -1,5 +1,4 @@
1
- import {Feature}from'@common-stack/server-core';import {schema}from'./graphql/schema/index.js';import {messengerResolvers}from'./graphql/resolvers/index.js';// import { serviceContainerModule, proxyServiceContainerModule, contextServicesFromContainer } from './containers';
2
- // import {
1
+ import {Feature}from'@common-stack/server-core';import {schema}from'./graphql/schema/index.js';import {messengerResolvers}from'./graphql/resolvers/index.js';import {serviceContainerModule}from'./containers/containers.js';import'@common-stack/core';import'./constants/query.constants.js';import'@messenger-box/core/lib/server';// import {
3
2
  // ChannelMoleculerService,
4
3
  // MessengerNotificationMoleculerService,
5
4
  // PostMoleculerService,
@@ -9,7 +8,7 @@ import {Feature}from'@common-stack/server-core';import {schema}from'./graphql/sc
9
8
  var MessengerModule = new Feature({
10
9
  schema,
11
10
  // createContainerFunc: [proxyServiceContainerModule],
12
- // createHemeraContainerFunc: [serviceContainerModule],
11
+ createHemeraContainerFunc: [serviceContainerModule],
13
12
  createResolversFunc: messengerResolvers,
14
13
  // createServiceFunc: contextServicesFromContainer,
15
14
  // addBrokerClientServiceClass: [
package/lib/module.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../src/module.ts"],"sourcesContent":[null],"names":[],"mappings":"6JAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA,sBAAe,IAAI,OAAO,CAAC;IACvB,MAAM;;;AAGN,IAAA,mBAAmB,EAAE,kBAAkB;;;;;;;;;;AAU1C,CAAA,CAAC"}
1
+ {"version":3,"file":"module.js","sources":["../src/module.ts"],"sourcesContent":[null],"names":[],"mappings":"sUAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA,sBAAe,IAAI,OAAO,CAAC;IACvB,MAAM;;IAEN,yBAAyB,EAAE,CAAC,sBAAsB,CAAC;AACnD,IAAA,mBAAmB,EAAE,kBAAkB;;;;;;;;;;AAU1C,CAAA,CAAC"}
@@ -0,0 +1,277 @@
1
+ import {__decorate,__param}from'tslib';import {inject}from'inversify';import {BaseService,ISortEnum}from'@common-stack/store-mongo';import'../constants/query.constants.js';import {DEFAULT_NOTIFY_PROPS}from'../constants/default-notify-props.js';import {TYPES}from'@messenger-box/core/lib/server';let ChannelService = class ChannelService extends BaseService {
2
+ constructor(repository, postService) {
3
+ super(repository);
4
+ this.repository = repository;
5
+ this.postService = postService;
6
+ }
7
+ async isMember(channelId, user) {
8
+ var _a;
9
+ const channel = await this.get(channelId);
10
+ return !!((_a = channel === null || channel === void 0 ? void 0 : channel.members) === null || _a === void 0 ? void 0 : _a.find((member) => member.user.toString() === user.toString()));
11
+ }
12
+ static getDmNameFromIds(senderId, receiverId) {
13
+ return `${senderId}__${receiverId}`;
14
+ }
15
+ get defaultNotifyProps() {
16
+ // #Todo: To be moved to settings
17
+ return DEFAULT_NOTIFY_PROPS;
18
+ }
19
+ static getMaxChannelsPerTeam(teamId) {
20
+ // #Todo: Get Max Channel per team from Team settings
21
+ return Promise.resolve(10);
22
+ }
23
+ async getCurrentChannelCountPerTeam(team) {
24
+ return this.repository.count({
25
+ team,
26
+ type: "CHANNEL" /* IRoomType.Channel */,
27
+ });
28
+ }
29
+ async createDirectChannel(data) {
30
+ const { sender, receiver, displayName } = data;
31
+ const chlMember = [
32
+ {
33
+ user: sender,
34
+ schemeAdmin: false,
35
+ notifyProps: this.defaultNotifyProps,
36
+ },
37
+ ];
38
+ receiver.forEach((re) => {
39
+ chlMember.push({
40
+ user: re,
41
+ schemeAdmin: false,
42
+ notifyProps: this.defaultNotifyProps,
43
+ });
44
+ });
45
+ const channelPayload = {
46
+ title: sender.split('').reverse().join(''),
47
+ type: "DIRECT" /* IRoomType.Direct */,
48
+ creator: sender,
49
+ members: chlMember,
50
+ displayName,
51
+ };
52
+ return this.saveDirectChannel(channelPayload);
53
+ }
54
+ async saveDirectChannel(channel) {
55
+ const { type, deletedAt } = channel;
56
+ if (deletedAt) {
57
+ return new Error('Deleted Channel can not be saved');
58
+ }
59
+ if (type !== "DIRECT" /* IRoomType.Direct */) {
60
+ return new Error('Only direct channels are allowed');
61
+ }
62
+ return this.repository.create(channel);
63
+ }
64
+ async addMemberToChannel(channelId, memberId) {
65
+ // const { channelId, memberId } = data;
66
+ // console.log('==============================', channelId);
67
+ const resData = await this.repository
68
+ .get({ id: channelId })
69
+ .then(async (res) => {
70
+ const mebs = res.members;
71
+ mebs.push({
72
+ id: '',
73
+ user: memberId,
74
+ schemeAdmin: false,
75
+ notifyProps: this.defaultNotifyProps,
76
+ });
77
+ const objToUpdate = res;
78
+ objToUpdate.members = mebs;
79
+ const finalResult = await this.repository
80
+ .update({ id: channelId }, objToUpdate, { overwrite: true })
81
+ .then((response) => response)
82
+ .catch((error) => error);
83
+ return finalResult;
84
+ })
85
+ .catch((err) => err);
86
+ return resData;
87
+ }
88
+ async saveMembersToChannel(data) {
89
+ const { channelId, membersId } = data;
90
+ console.log('membersId==============================', membersId);
91
+ const resData = await this.repository
92
+ .get({ id: channelId })
93
+ .then(async (res) => {
94
+ let mebs = res.members;
95
+ //
96
+ console.log('mebs==============================', mebs);
97
+ if (Array.isArray(membersId)) {
98
+ if (membersId === null || membersId === void 0 ? void 0 : membersId.length) {
99
+ membersId.forEach((mid) => {
100
+ mebs.push({
101
+ id: '',
102
+ user: mid,
103
+ schemeAdmin: false,
104
+ notifyProps: this.defaultNotifyProps,
105
+ });
106
+ });
107
+ }
108
+ }
109
+ const objToUpdate = res;
110
+ objToUpdate.members = mebs;
111
+ const finalResult = await this.repository
112
+ .update({ id: channelId }, objToUpdate, { overwrite: true })
113
+ .then((response) => response)
114
+ .catch((error) => error);
115
+ return finalResult;
116
+ })
117
+ .catch((err) => err);
118
+ return resData;
119
+ }
120
+ async saveChannel(data) {
121
+ const { type, team, creator } = data;
122
+ if (type !== "CHANNEL" /* IRoomType.Channel */) {
123
+ return new Error('Invalid Channel Type');
124
+ }
125
+ const maxChannels = await ChannelService.getMaxChannelsPerTeam(team);
126
+ const currentChannels = await this.getCurrentChannelCountPerTeam(team);
127
+ const canAddNewChannel = currentChannels < maxChannels;
128
+ if (!canAddNewChannel) {
129
+ return Error(`Only max of ${maxChannels} allowed`);
130
+ }
131
+ const channelPayload = Object.assign(Object.assign({}, data), { members: [
132
+ {
133
+ user: creator,
134
+ schemeAdmin: false,
135
+ notifyProps: this.defaultNotifyProps,
136
+ },
137
+ ] });
138
+ return this.repository.create(channelPayload);
139
+ }
140
+ async getChannelUnread(channelId, userId) {
141
+ const channel = await this.repository.get({
142
+ id: channelId,
143
+ members: { user: userId },
144
+ });
145
+ const { members, team, id } = channel;
146
+ const member = members.find((i) => i.user.toString() === userId);
147
+ const msgCount = channel.totalMsgCount - member.msgCount;
148
+ const msgCountRoot = channel.totalMsgCountRoot - member.msgCountRoot;
149
+ const { notifyProps, mentionCountRoot, mentionCount } = member;
150
+ return {
151
+ channelId: id,
152
+ teamId: team.toString(),
153
+ msgCount,
154
+ msgCountRoot,
155
+ mentionCount,
156
+ notifyProps,
157
+ mentionCountRoot,
158
+ };
159
+ }
160
+ async getPinnedPosts(channelId) {
161
+ const posts = await this.postService.getAll({
162
+ criteria: {
163
+ channelId,
164
+ isPinned: true,
165
+ },
166
+ sort: {
167
+ key: 'CreatAt',
168
+ value: ISortEnum.Asc,
169
+ },
170
+ });
171
+ const replyCounts = await Promise.all(posts.map((post) => this.postService.count({ rootId: post.rootId || post.id })));
172
+ return posts.reduce((acc, curr, index) => [...acc, Object.assign(Object.assign({}, curr), { replyCount: replyCounts[index] })], []);
173
+ }
174
+ restore(channelId, time) {
175
+ return this.repository.update({ id: channelId }, {
176
+ deletedAt: time,
177
+ });
178
+ }
179
+ getByName(team, title) {
180
+ return this.get({
181
+ team,
182
+ title,
183
+ });
184
+ }
185
+ getByNameIncludeDeleted(team, title) {
186
+ return this.get({
187
+ team,
188
+ title,
189
+ deletedAt: true,
190
+ });
191
+ }
192
+ getByNames(team, titles) {
193
+ return this.getAll({
194
+ criteria: {
195
+ team,
196
+ title: { $in: titles },
197
+ },
198
+ });
199
+ }
200
+ getChannelCounts(team, user) {
201
+ return this.count({
202
+ team,
203
+ members: { user },
204
+ });
205
+ }
206
+ getChannels(team, user, includeDeleted, lastDeleteAt) {
207
+ return this.repository.getAll({
208
+ // criteria: {
209
+ // team,
210
+ // members: { user },
211
+ // },
212
+ });
213
+ }
214
+ deleteChannel(id) {
215
+ return this.repository.delete({ id });
216
+ }
217
+ getDeleted(teamId, offset, limit, userId) {
218
+ return Promise.resolve(undefined);
219
+ }
220
+ getDeletedByName(teamId, name) {
221
+ return Promise.resolve(undefined);
222
+ }
223
+ getFromMaster(id) {
224
+ return Promise.resolve(undefined);
225
+ }
226
+ getMoreChannels(teamId, userId, offset, limit) {
227
+ return Promise.resolve(undefined);
228
+ }
229
+ getPrivateChannelsForTeam(teamId, offset, limit) {
230
+ return Promise.resolve(undefined);
231
+ }
232
+ getPublicChannelsByIdsForTeam(teamId, channelsIds) {
233
+ return Promise.resolve(undefined);
234
+ }
235
+ getPublicChannelsForTeam(teamId, offset, limit) {
236
+ return Promise.resolve(undefined);
237
+ }
238
+ getTeamChannels(teamId) {
239
+ return Promise.resolve(undefined);
240
+ }
241
+ hideChannel(id) {
242
+ return Promise.resolve(false);
243
+ }
244
+ invalidateChannelByName(teamId, name) {
245
+ return Promise.resolve();
246
+ }
247
+ leaveChannel(id) {
248
+ return Promise.resolve(false);
249
+ }
250
+ async viewChannel(id, user) {
251
+ // Accessing private property
252
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
253
+ // @ts-ignore
254
+ await this.repository.model.updateOne({ _id: id }, {
255
+ 'members.$[elem].lastViewedAt': new Date(),
256
+ }, {
257
+ arrayFilters: [{ 'elem.user': user }],
258
+ });
259
+ return true;
260
+ }
261
+ permanentDelete(channelId) {
262
+ return undefined;
263
+ }
264
+ permanentDeleteByTeam(teamId) {
265
+ return undefined;
266
+ }
267
+ permanentDeleteMembersByChannel(channelId) {
268
+ return undefined;
269
+ }
270
+ saveMultipleMembers(members) {
271
+ return Promise.resolve(undefined);
272
+ }
273
+ };
274
+ ChannelService = __decorate([
275
+ __param(0, inject(TYPES.ChannelRepository)),
276
+ __param(1, inject(TYPES.PostService))
277
+ ], ChannelService);export{ChannelService};//# sourceMappingURL=channel-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-service.js","sources":["../../src/services/channel-service.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -3,4 +3,3 @@ export * from './post-service';
3
3
  export * from './post-thread-service';
4
4
  export * from './reaction-service';
5
5
  export * from './messenger-notification-service';
6
- export * from './extended-token-account-service';
@@ -0,0 +1,158 @@
1
+ import {__decorate,__param}from'tslib';import {omit}from'lodash';import sub from'date-fns/sub';import compareAsc from'date-fns/compareAsc';import {IMoleculerServiceName,ISmsServiceActions}from'@messenger-box/notification-api-core';import {injectable,inject}from'inversify';import {IMoleculerServiceName as IMoleculerServiceName$1,IAccountServiceAction}from'@adminide-stack/core';import {CommonType}from'@common-stack/core';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';import {config}from'../config/env-config.js';let MessengerNotificationService = class MessengerNotificationService {
2
+ constructor(channelRepository, postRepository, broker, logger) {
3
+ this.channelRepository = channelRepository;
4
+ this.postRepository = postRepository;
5
+ this.broker = broker;
6
+ this.logger = logger;
7
+ this.users = {};
8
+ this.userPreferences = {};
9
+ }
10
+ async getLatestMessageInAllChannels(unit, value) {
11
+ const today = new Date();
12
+ const lastDay = sub(today, { [unit]: value });
13
+ const channels = await this.channelRepository.model.aggregate([
14
+ {
15
+ $match: {
16
+ lastPostAt: { $gte: lastDay, $lte: today },
17
+ },
18
+ },
19
+ {
20
+ $project: {
21
+ _id: true,
22
+ lastPostAt: true,
23
+ creator: true,
24
+ members: {
25
+ $filter: {
26
+ input: '$members',
27
+ as: 'item',
28
+ cond: {
29
+ $and: [
30
+ {
31
+ $lte: ['$$item.lastViewedAt', '$lastPostAt'],
32
+ },
33
+ ],
34
+ },
35
+ },
36
+ },
37
+ },
38
+ },
39
+ ]);
40
+ const posts = await this.postRepository.getAll({
41
+ criteria: {
42
+ channel: { $in: channels.map(({ _id }) => _id) },
43
+ createdAt: { $in: channels.map(({ lastPostAt }) => lastPostAt) },
44
+ },
45
+ });
46
+ return channels.map((channel) => (Object.assign(Object.assign({}, channel), {
47
+ // eslint-disable-next-line no-underscore-dangle
48
+ post: posts.find((post) => post.channel.toString() === channel._id.toString()) })));
49
+ }
50
+ groupByMember(channels) {
51
+ return channels.reduce((acc, curr) => {
52
+ const members = this.findMembersWithUnreadMessage(curr);
53
+ const channelWithoutMembers = omit(curr, ['members']);
54
+ return members.reduce((memberAcc, memberCurr) => (Object.assign(Object.assign({}, acc), { [memberCurr.user.toString()]: Array.isArray(memberAcc[memberCurr.user.toString()])
55
+ ? [...memberAcc[memberCurr.user.toString()], channelWithoutMembers]
56
+ : [channelWithoutMembers] })), acc);
57
+ }, {});
58
+ }
59
+ findMembersWithUnreadMessage(channelMessage) {
60
+ return channelMessage.members.filter(({ lastViewedAt }) => compareAsc(channelMessage.lastPostAt, lastViewedAt), []);
61
+ }
62
+ async sendMail(user, channels) {
63
+ this.logger.debug('Outgoing request to SendMail', { user: this.users[user], channels });
64
+ const { notificationEmail, email, username } = this.users[user];
65
+ await this.broker.call(`${"MailService" /* IMailMoleculerServiceName.MailService */}.${"send" /* IMailServiceAction.send */}`, {
66
+ request: {
67
+ topic: 'Unread Messages Notification',
68
+ to: notificationEmail || email,
69
+ templateId: "MessageNotificationServiceId" /* IMailTemplateId.MessageNotificationServiceId */,
70
+ from: config.MAIL_SEND_DEFAULT_EMAIL,
71
+ subject: `You have Unread Messages in ${channels.length} chats`,
72
+ variables: {
73
+ text: `Hey ${username},\nYou have Unread Messages in ${channels.length} chats`,
74
+ user,
75
+ channel: channels,
76
+ },
77
+ },
78
+ });
79
+ }
80
+ async sendText(user, channels) {
81
+ this.logger.debug('Outgoing request to SendSMS', { user: this.users[user], channels });
82
+ // #Todo Get User Full Name and Phone Number
83
+ const { username, phoneNumber } = this.users[user];
84
+ const [number] = phoneNumber;
85
+ if (!number) {
86
+ this.logger.debug('Outgoing request to SendSMS Skipped, reason No phoneNumber found', {
87
+ user: this.users[user],
88
+ channels,
89
+ });
90
+ }
91
+ await this.broker.call(`${IMoleculerServiceName.SmsService}.${ISmsServiceActions.Send}`, {
92
+ to: number,
93
+ body: `Hey ${username},\nYou have Unread Messages in ${channels.length} chats`,
94
+ });
95
+ }
96
+ async sendPushNotifications(user, channels) {
97
+ // #Todo Dispatch Push notification once support is added
98
+ this.logger.debug('Outgoing request to SendPushNotification', { user: this.users[user], channels });
99
+ return Promise.resolve();
100
+ }
101
+ getGlobalNotificationSettings(user) {
102
+ // #Todo fetch from preferences
103
+ return Promise.resolve({
104
+ global: {
105
+ notification: {
106
+ offlineMessages: {
107
+ sms: true,
108
+ email: true,
109
+ browser: true,
110
+ },
111
+ },
112
+ },
113
+ });
114
+ }
115
+ async getUser(id) {
116
+ return this.broker.call(`${IMoleculerServiceName$1.AccountUser}.${IAccountServiceAction.FindAccountById}`, {
117
+ id,
118
+ });
119
+ }
120
+ async fetchUsersForMembers(users) {
121
+ return Promise.all(users
122
+ .filter((user) => !Object.keys(this.users).includes(user))
123
+ .map(async (user) => {
124
+ this.users[user] = await this.getUser(user);
125
+ this.userPreferences[user] = await this.getGlobalNotificationSettings(user);
126
+ }));
127
+ }
128
+ async sendNotificationToUser([user, channels]) {
129
+ var _a, _b, _c;
130
+ await this.fetchUsersForMembers([user, ...channels.map(({ post }) => post.editedBy.toString())]);
131
+ const { email, sms, browser } = ((_c = (_b = (_a = this.userPreferences[user]) === null || _a === void 0 ? void 0 : _a.global) === null || _b === void 0 ? void 0 : _b.notification) === null || _c === void 0 ? void 0 : _c.offlineMessages) || {};
132
+ const filteredChannels = channels.filter(({ post }) => user !== post.editedBy.toString());
133
+ if ((filteredChannels === null || filteredChannels === void 0 ? void 0 : filteredChannels.length) === 0) {
134
+ return;
135
+ }
136
+ if (email) {
137
+ await this.sendMail(user, filteredChannels);
138
+ }
139
+ if (sms) {
140
+ await this.sendText(user, filteredChannels);
141
+ }
142
+ if (browser) {
143
+ await this.sendPushNotifications(user, filteredChannels);
144
+ }
145
+ }
146
+ async sendNotificationOfUnreadMessages(unit, value) {
147
+ const channels = await this.getLatestMessageInAllChannels(unit, value);
148
+ const membersWithUnreadMessagesInChannels = this.groupByMember(channels);
149
+ await Promise.all(Object.entries(membersWithUnreadMessagesInChannels).map(this.sendNotificationToUser.bind(this)));
150
+ }
151
+ };
152
+ MessengerNotificationService = __decorate([
153
+ injectable(),
154
+ __param(0, inject(TYPES.ChannelRepository)),
155
+ __param(1, inject(TYPES.PostRepository)),
156
+ __param(2, inject(CommonType.MOLECULER_BROKER)),
157
+ __param(3, inject('Logger'))
158
+ ], MessengerNotificationService);export{MessengerNotificationService};//# sourceMappingURL=messenger-notification-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messenger-notification-service.js","sources":["../../src/services/messenger-notification-service.ts"],"sourcesContent":[null],"names":["INotificationMoleculerServiceName","IMoleculerServiceName"],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import {__decorate,__param}from'tslib';import {inject}from'inversify';import {set}from'lodash';import {TYPES as TYPES$1}from'@container-stack/file-info-core';import {BaseService}from'@common-stack/store-mongo';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';import {PostTypes}from'../preferences/settings/post-settings.js';let PostService = class PostService extends BaseService {
2
+ constructor(repository, channelRepo, fileInfoService) {
3
+ super(repository);
4
+ this.channelRepo = channelRepo;
5
+ this.fileInfoService = fileInfoService;
6
+ }
7
+ createFileUploadLink(postId, filename, userId) {
8
+ return this.fileInfoService.uploadByUrl({
9
+ filename,
10
+ refType: "Post" /* IFileRefType.Post */,
11
+ ref: postId,
12
+ userId,
13
+ });
14
+ }
15
+ async attachUploadedFile(postId, file, createdBy) {
16
+ const { id } = await this.fileInfoService.createUploadedFile(Object.assign(Object.assign({}, file), { refType: "Post" /* IFileRefType.Post */, ref: postId, createdBy }));
17
+ const fileResponse = await this.fileInfoService.get(id);
18
+ return Object.assign(Object.assign({}, fileResponse), { url: this.fileInfoService.getDefaultImage(fileResponse.url) });
19
+ }
20
+ createFilesUploadLink(postId, filenames, userId) {
21
+ return Promise.all(filenames.map((filename) => this.fileInfoService.uploadByUrl({
22
+ filename,
23
+ refType: "Post" /* IFileRefType.Post */,
24
+ ref: postId,
25
+ userId,
26
+ })));
27
+ }
28
+ attachUploadedFiles(postId, files, createdBy) {
29
+ return Promise.all(files.map(async (file) => {
30
+ const { id } = await this.fileInfoService.createUploadedFile(Object.assign(Object.assign({}, file), { refType: "Post" /* IFileRefType.Post */, ref: postId, createdBy }));
31
+ const fileResponse = await this.fileInfoService.get(id);
32
+ return Object.assign(Object.assign({}, fileResponse), { url: this.fileInfoService.getDefaultImage(fileResponse.url) });
33
+ }));
34
+ }
35
+ async create(data) {
36
+ const post = await super.create(data);
37
+ const { channel } = data;
38
+ // Accessing private property
39
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
40
+ // @ts-ignore
41
+ await this.channelRepo.model.updateOne({ _id: channel }, {
42
+ lastPostAt: post.createdAt,
43
+ $inc: {
44
+ totalMsgCount: 1,
45
+ totalMsgCountRoot: 1,
46
+ 'members.$[elem].msgCountRoot': 1,
47
+ 'members.$[elem].msgCount': 1,
48
+ },
49
+ }, {
50
+ arrayFilters: [{ 'elem.user': data.author }],
51
+ });
52
+ return post;
53
+ }
54
+ deleteFile(url) {
55
+ return this.fileInfoService.deleteByUrl(url);
56
+ }
57
+ async readMessage(messageId, user) {
58
+ await this.update(messageId.messageId, {
59
+ props: {
60
+ [`[${user}]`]: set({}, PostTypes.isRead, true),
61
+ },
62
+ });
63
+ return true;
64
+ }
65
+ async deliverMessage(messageId, user) {
66
+ await this.update(messageId.messageId, {
67
+ props: {
68
+ [`[${user}]`]: set({}, PostTypes.isDelivered, true),
69
+ },
70
+ });
71
+ return true;
72
+ }
73
+ };
74
+ PostService = __decorate([
75
+ __param(0, inject(TYPES.PostRepository)),
76
+ __param(1, inject(TYPES.ChannelRepository)),
77
+ __param(2, inject(TYPES$1.FileInfoService))
78
+ ], PostService);export{PostService};//# sourceMappingURL=post-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-service.js","sources":["../../src/services/post-service.ts"],"sourcesContent":[null],"names":["FileUploadTypes"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import {__decorate,__param}from'tslib';import {injectable,inject}from'inversify';import {BaseService}from'@common-stack/store-mongo';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';let PostThreadService = class PostThreadService extends BaseService {
2
+ constructor(repository) {
3
+ super(repository);
4
+ this.repository = repository;
5
+ }
6
+ };
7
+ PostThreadService = __decorate([
8
+ injectable(),
9
+ __param(0, inject(TYPES.PostThreadRepository))
10
+ ], PostThreadService);export{PostThreadService};//# sourceMappingURL=post-thread-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-thread-service.js","sources":["../../src/services/post-thread-service.ts"],"sourcesContent":[null],"names":[],"mappings":"gOAOO,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,WAAwB,CAAA;AAC3D,IAAA,WAAA,CAEa,UAAiC,EAAA;QAE1C,KAAK,CAAC,UAAU,CAAC,CAAC;QAFT,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;KAG7C;EACJ;AAPY,iBAAiB,GAAA,UAAA,CAAA;AAD7B,IAAA,UAAU,EAAE;AAGJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;AAF9B,CAAA,EAAA,iBAAiB,CAO7B"}
@@ -0,0 +1,10 @@
1
+ import {__decorate,__param}from'tslib';import {injectable,inject}from'inversify';import {BaseService}from'@common-stack/store-mongo';import'../constants/query.constants.js';import {TYPES}from'@messenger-box/core/lib/server';let ReactionService = class ReactionService extends BaseService {
2
+ constructor(reactionRepository) {
3
+ super(reactionRepository);
4
+ this.reactionRepository = reactionRepository;
5
+ }
6
+ };
7
+ ReactionService = __decorate([
8
+ injectable(),
9
+ __param(0, inject(TYPES.ReactionRepository))
10
+ ], ReactionService);export{ReactionService};//# sourceMappingURL=reaction-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reaction-service.js","sources":["../../src/services/reaction-service.ts"],"sourcesContent":[null],"names":[],"mappings":"gOAOO,IAAM,eAAe,GAArB,MAAM,eACT,SAAQ,WAAsE,CAAA;AAG9E,IAAA,WAAA,CAEa,kBAAuC,EAAA;QAEhD,KAAK,CAAC,kBAA2B,CAAC,CAAC;QAF1B,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAqB;KAGnD;EACJ;AAVY,eAAe,GAAA,UAAA,CAAA;AAD3B,IAAA,UAAU,EAAE;AAMJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;AAL5B,CAAA,EAAA,eAAe,CAU3B"}
@@ -0,0 +1,3 @@
1
+ import {Schema}from'mongoose';({
2
+ deviceToken: { type: Schema.Types.String },
3
+ });//# sourceMappingURL=account-token-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-token-store.js","sources":["../../../src/store/models/account-token-store.ts"],"sourcesContent":[null],"names":[],"mappings":"+BAK+C;IAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;"}
@@ -0,0 +1,35 @@
1
+ import {Schema}from'mongoose';import {commonModeSchemaOptions,addIdVirtualFields}from'./common-options.js';const channelModelSchema = new Schema({
2
+ type: {
3
+ type: Schema.Types.String,
4
+ enum: ["CHANNEL" /* IRoomType.Channel */, "DIRECT" /* IRoomType.Direct */, "GROUP" /* IRoomType.Group */, "PRIVATE" /* IRoomType.Private */, "VISITOR" /* IRoomType.Visitor */],
5
+ required: true,
6
+ },
7
+ members: [
8
+ new Schema({
9
+ user: { type: Schema.Types.ObjectId, ref: 'accounts' },
10
+ roles: { type: Schema.Types.String },
11
+ msgCount: { type: Schema.Types.Number },
12
+ mentionCount: { type: Schema.Types.Number },
13
+ mentionCountRoot: { type: Schema.Types.Number },
14
+ msgCountRoot: { type: Schema.Types.Number },
15
+ notifyProps: { type: Schema.Types.Mixed },
16
+ explicitRoles: { type: Schema.Types.String },
17
+ schemeAdmin: { type: Schema.Types.String },
18
+ lastViewedAt: { type: Schema.Types.Date },
19
+ deletedAt: { type: Schema.Types.Date },
20
+ }, commonModeSchemaOptions),
21
+ ],
22
+ deletedAt: { type: Schema.Types.Date },
23
+ lastPostAt: { type: Schema.Types.Date },
24
+ totalMsgCount: { type: Schema.Types.Number },
25
+ totalMsgCountRoot: { type: Schema.Types.Number },
26
+ team: { type: Schema.Types.ObjectId, ref: 'team' },
27
+ title: { type: Schema.Types.String },
28
+ displayName: { type: Schema.Types.String },
29
+ description: { type: Schema.Types.String },
30
+ props: { type: Schema.Types.Mixed },
31
+ purpose: { type: Schema.Types.String },
32
+ creator: { type: Schema.Types.ObjectId, ref: 'accounts' },
33
+ }, commonModeSchemaOptions);
34
+ addIdVirtualFields(channelModelSchema);
35
+ const ChannelModelFunc = (db) => db.model('channel', channelModelSchema);export{ChannelModelFunc};//# sourceMappingURL=channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.js","sources":["../../../src/store/models/channel.ts"],"sourcesContent":[null],"names":[],"mappings":"2GAMA,MAAM,kBAAkB,GAAG,IAAI,MAAM,CACjC;AACI,IAAA,IAAI,EAAE;AACF,QAAA,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;AACzB,QAAA,IAAI,EAAE,CAA4F,SAAA,0BAAA,QAAA,yBAAA,OAAA,wBAAA,SAAA,0BAAA,SAAA,yBAAA;AAClG,QAAA,QAAQ,EAAE,IAAI;AACjB,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,IAAI,MAAM,CACN;AACI,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;YACtD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACpC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACvC,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC3C,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC/C,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YACzC,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1C,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;YACzC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,SAAA,EACD,uBAAuB,CAC1B;AACJ,KAAA;IACD,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACvC,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC5C,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AAChD,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;IAClD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACpC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACtC,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;CAC5D,EACD,uBAAuB,CAC1B,CAAC;AAEF,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAG1B,MAAA,gBAAgB,GAAyC,CAAC,EAAE,KACrE,EAAE,CAAC,KAAK,CAAgB,SAAS,EAAE,kBAAkB"}
@@ -0,0 +1,20 @@
1
+ const commonModeSchemaOptions = {
2
+ timestamps: true,
3
+ toJSON: {
4
+ virtuals: true,
5
+ },
6
+ toObject: {
7
+ virtuals: true,
8
+ getters: true,
9
+ transform(doc, ret) {
10
+ delete ret.__v;
11
+ delete ret._id;
12
+ },
13
+ },
14
+ };
15
+ const addIdVirtualFields = (schema) => {
16
+ schema.set('toJSON', {
17
+ virtuals: true,
18
+ });
19
+ return schema;
20
+ };export{addIdVirtualFields,commonModeSchemaOptions};//# sourceMappingURL=common-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-options.js","sources":["../../../src/store/models/common-options.ts"],"sourcesContent":[null],"names":[],"mappings":"AAGa,MAAA,uBAAuB,GAAG;AACnC,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,MAAM,EAAE;AACJ,QAAA,QAAQ,EAAE,IAAI;AACjB,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,OAAO,EAAE,IAAI;QACb,SAAS,CAAC,GAAG,EAAE,GAAG,EAAA;YACd,OAAO,GAAG,CAAC,GAAG,CAAC;YACf,OAAO,GAAG,CAAC,GAAG,CAAC;SAClB;AACJ,KAAA;EACH;AAEW,MAAA,kBAAkB,GAAG,CAAC,MAAc,KAAI;AACjD,IAAA,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;AACjB,QAAA,QAAQ,EAAE,IAAI;AACjB,KAAA,CAAC,CAAC;AACH,IAAA,OAAO,MAAM,CAAC;AAClB"}
@@ -0,0 +1,9 @@
1
+ import {Schema}from'mongoose';import {commonModeSchemaOptions,addIdVirtualFields}from'./common-options.js';const postThreadModelSchema = new Schema({
2
+ post: { type: Schema.Types.ObjectId, ref: 'posts' },
3
+ channel: { type: Schema.Types.ObjectId, ref: 'channels' },
4
+ replyCount: { type: Schema.Types.Number },
5
+ lastReplyAt: { type: Schema.Types.Date },
6
+ participants: [{ type: Schema.Types.ObjectId, ref: 'accounts' }],
7
+ }, commonModeSchemaOptions);
8
+ addIdVirtualFields(postThreadModelSchema);
9
+ const PostThreadModelFunc = (db) => db.model('post-threads', postThreadModelSchema);export{PostThreadModelFunc};//# sourceMappingURL=post-thread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-thread.js","sources":["../../../src/store/models/post-thread.ts"],"sourcesContent":[null],"names":[],"mappings":"2GAMA,MAAM,qBAAqB,GAAG,IAAI,MAAM,CACpC;AACI,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;AACnD,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;IACzD,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACzC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AACxC,IAAA,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;CACnE,EACD,uBAAuB,CAC1B,CAAC;AAEF,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;AAG7B,MAAA,mBAAmB,GAA4C,CAAC,EAAE,KAC3E,EAAE,CAAC,KAAK,CAAgB,cAAc,EAAE,qBAAqB"}
@@ -0,0 +1,21 @@
1
+ import {Schema}from'mongoose';import {commonModeSchemaOptions,addIdVirtualFields}from'./common-options.js';const postModelSchema = new Schema({
2
+ createdAt: { type: Schema.Types.Date },
3
+ editedAt: { type: Schema.Types.Date },
4
+ deletedAt: { type: Schema.Types.Date },
5
+ editedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },
6
+ deletedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },
7
+ channel: { type: Schema.Types.ObjectId, ref: 'channels' },
8
+ rootId: { type: Schema.Types.String },
9
+ parentId: { type: Schema.Types.String },
10
+ originalId: { type: Schema.Types.String },
11
+ message: { type: Schema.Types.String },
12
+ type: { type: Schema.Types.String },
13
+ props: { type: Schema.Types.Mixed },
14
+ hashtags: { type: Schema.Types.Mixed },
15
+ filenames: { type: Schema.Types.Mixed },
16
+ fields: { type: Schema.Types.String },
17
+ files: [{ type: Schema.Types.ObjectId }],
18
+ hasReactions: { type: Schema.Types.Boolean },
19
+ }, commonModeSchemaOptions);
20
+ addIdVirtualFields(postModelSchema);
21
+ const PostModelFunc = (db) => db.model('posts', postModelSchema);export{PostModelFunc};//# sourceMappingURL=post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.js","sources":["../../../src/store/models/post.ts"],"sourcesContent":[null],"names":[],"mappings":"2GAMA,MAAM,eAAe,GAAG,IAAI,MAAM,CAC9B;IACI,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AACtC,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;AAC1D,IAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;AAC3D,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;IACzD,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACrC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACtC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACnC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACnC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACvC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACrC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACxC,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;CAC/C,EACD,uBAAuB,CAC1B,CAAC;AAEF,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAGvB,MAAA,aAAa,GAAsC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAa,OAAO,EAAE,eAAe"}
@@ -0,0 +1,8 @@
1
+ import {Schema}from'mongoose';import {addIdVirtualFields}from'./common-options.js';const reactionModelSchema = new Schema({
2
+ createdAt: { type: Schema.Types.Date },
3
+ reaction: { type: Schema.Types.String },
4
+ user: { type: Schema.Types.ObjectId, ref: 'accounts' },
5
+ post: { type: Schema.Types.ObjectId, ref: 'posts' },
6
+ });
7
+ addIdVirtualFields(reactionModelSchema);
8
+ const ReactionModelFunc = (db) => db.model('reactions', reactionModelSchema);export{ReactionModelFunc};//# sourceMappingURL=reaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reaction.js","sources":["../../../src/store/models/reaction.ts"],"sourcesContent":[null],"names":[],"mappings":"mFAMA,MAAM,mBAAmB,GAAG,IAAI,MAAM,CAAC;IACnC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACvC,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;AACtD,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;AACtD,CAAA,CAAC,CAAC;AAEH,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AAG3B,MAAA,iBAAiB,GAA0C,CAAC,EAAE,KACvE,EAAE,CAAC,KAAK,CAAiB,WAAW,EAAE,mBAAmB"}
@@ -0,0 +1,12 @@
1
+ import {__decorate,__param}from'tslib';import {injectable,inject,optional}from'inversify';import {BaseRepository}from'@common-stack/store-mongo';import {ChannelModelFunc}from'../models/channel.js';import'../models/post.js';import'../models/post-thread.js';import'../models/reaction.js';import'../models/account-token-store.js';let ChannelRepository = class ChannelRepository extends BaseRepository {
2
+ constructor(db, logger, options) {
3
+ super(ChannelModelFunc, db, logger, options);
4
+ }
5
+ };
6
+ ChannelRepository = __decorate([
7
+ injectable(),
8
+ __param(0, inject('MongoDBConnection')),
9
+ __param(1, inject('Logger')),
10
+ __param(2, inject('IMongoOptions')),
11
+ __param(2, optional())
12
+ ], ChannelRepository);export{ChannelRepository};//# sourceMappingURL=channel-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-repository.js","sources":["../../../src/store/repositories/channel-repository.ts"],"sourcesContent":[null],"names":[],"mappings":"uUASO,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,cAAwB,CAAA;AAC3D,IAAA,WAAA,CAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB,EAAA;QAEvB,KAAK,CAAC,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAChD;EACJ;AAZY,iBAAiB,GAAA,UAAA,CAAA;AAD7B,IAAA,UAAU,EAAE;AAGJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAE3B,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEhB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAPN,CAAA,EAAA,iBAAiB,CAY7B"}
@@ -0,0 +1,12 @@
1
+ import {__decorate,__param}from'tslib';import {injectable,inject,optional}from'inversify';import {BaseRepository}from'@common-stack/store-mongo';import'../models/channel.js';import {PostModelFunc}from'../models/post.js';import'../models/post-thread.js';import'../models/reaction.js';import'../models/account-token-store.js';let PostRepository = class PostRepository extends BaseRepository {
2
+ constructor(db, logger, options) {
3
+ super(PostModelFunc, db, logger, options);
4
+ }
5
+ };
6
+ PostRepository = __decorate([
7
+ injectable(),
8
+ __param(0, inject('MongoDBConnection')),
9
+ __param(1, inject('Logger')),
10
+ __param(2, inject('IMongoOptions')),
11
+ __param(2, optional())
12
+ ], PostRepository);export{PostRepository};//# sourceMappingURL=post-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-repository.js","sources":["../../../src/store/repositories/post-repository.ts"],"sourcesContent":[null],"names":[],"mappings":"oUASO,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,cAAqB,CAAA;AACrD,IAAA,WAAA,CAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB,EAAA;QAEvB,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7C;EACJ;AAZY,cAAc,GAAA,UAAA,CAAA;AAD1B,IAAA,UAAU,EAAE;AAGJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAE3B,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEhB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAPN,CAAA,EAAA,cAAc,CAY1B"}
@@ -0,0 +1,12 @@
1
+ import {__decorate,__param}from'tslib';import {injectable,inject,optional}from'inversify';import {BaseRepository}from'@common-stack/store-mongo';import'../models/channel.js';import'../models/post.js';import {PostThreadModelFunc}from'../models/post-thread.js';import'../models/reaction.js';import'../models/account-token-store.js';let PostThreadRepository = class PostThreadRepository extends BaseRepository {
2
+ constructor(db, logger, options) {
3
+ super(PostThreadModelFunc, db, logger, options);
4
+ }
5
+ };
6
+ PostThreadRepository = __decorate([
7
+ injectable(),
8
+ __param(0, inject('MongoDBConnection')),
9
+ __param(1, inject('Logger')),
10
+ __param(2, inject('IMongoOptions')),
11
+ __param(2, optional())
12
+ ], PostThreadRepository);export{PostThreadRepository};//# sourceMappingURL=post-thread-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-thread-repository.js","sources":["../../../src/store/repositories/post-thread-repository.ts"],"sourcesContent":[null],"names":[],"mappings":"0UASO,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,cAA2B,CAAA;AACjE,IAAA,WAAA,CAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB,EAAA;QAEvB,KAAK,CAAC,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACnD;EACJ;AAZY,oBAAoB,GAAA,UAAA,CAAA;AADhC,IAAA,UAAU,EAAE;AAGJ,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAE3B,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEhB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAPN,CAAA,EAAA,oBAAoB,CAYhC"}
@@ -0,0 +1,11 @@
1
+ import {__decorate,__param}from'tslib';import {inject,optional}from'inversify';import {BaseRepository}from'@common-stack/store-mongo';import'../models/channel.js';import'../models/post.js';import'../models/post-thread.js';import {ReactionModelFunc}from'../models/reaction.js';import'../models/account-token-store.js';let ReactionRepository = class ReactionRepository extends BaseRepository {
2
+ constructor(db, logger, options) {
3
+ super(ReactionModelFunc, db, logger, options);
4
+ }
5
+ };
6
+ ReactionRepository = __decorate([
7
+ __param(0, inject('MongoDBConnection')),
8
+ __param(1, inject('Logger')),
9
+ __param(2, inject('IMongoOptions')),
10
+ __param(2, optional())
11
+ ], ReactionRepository);export{ReactionRepository};//# sourceMappingURL=reaction-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reaction-repository.js","sources":["../../../src/store/repositories/reaction-repository.ts"],"sourcesContent":[null],"names":[],"mappings":"6TAQO,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,cAAyC,CAAA;AAC7E,IAAA,WAAA,CAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB,EAAA;QAEvB,KAAK,CAAC,iBAA0B,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1D;EACJ;AAZY,kBAAkB,GAAA,UAAA,CAAA;AAEtB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAE3B,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEhB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAPN,CAAA,EAAA,kBAAkB,CAY9B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messenger-box/platform-server",
3
- "version": "0.0.1-alpha.264",
3
+ "version": "0.0.1-alpha.266",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -49,5 +49,5 @@
49
49
  "typescript": {
50
50
  "definition": "lib/index.d.ts"
51
51
  },
52
- "gitHead": "44f14cd2c48b88f50396b3c537204029d6df314a"
52
+ "gitHead": "c630d6898f033f400bde8b1121b23e3662da4cfe"
53
53
  }