@messenger-box/platform-server 0.0.1-alpha.74 → 0.0.1-alpha.86

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/lib/index.js CHANGED
@@ -413,6 +413,9 @@ const channelResolvers = () => ({
413
413
  description,
414
414
  });
415
415
  },
416
+ addMemberToChannel(src, { channelId, memberId }, { channelService, userContext }) {
417
+ return channelService.addMemberToChannel(channelId, memberId);
418
+ },
416
419
  createDirectChannel(src, { receiver, displayName }, { channelService, userContext }) {
417
420
  const { accountId } = userContext;
418
421
  return channelService.createDirectChannel({
@@ -427,6 +430,9 @@ const channelResolvers = () => ({
427
430
  leaveChannel(src, { id }, { channelService }) {
428
431
  return channelService.leaveChannel(id);
429
432
  },
433
+ deleteChannel(src, { id }, { channelService }) {
434
+ return channelService.deleteChannel(id);
435
+ },
430
436
  },
431
437
  });
432
438
  exports.channelResolvers = channelResolvers;
@@ -660,7 +666,7 @@ __webpack_require__.r(__webpack_exports__);
660
666
 
661
667
  "use strict";
662
668
  __webpack_require__.r(__webpack_exports__);
663
- /* harmony default export */ __webpack_exports__["default"] = ("type Channel implements IBaseRepo {\n id: String!\n title: String\n topic: String\n purpose: String\n description: String\n displayName: String\n team: AccountTeam\n lastPostAt: DateTime\n totalMsgCount: Int\n totalMsgCountRoot: Int\n creator: UserAccount\n members: [ChannelMember]\n type: String\n createdAt: DateTime\n updatedAt: DateTime\n deletedAt: DateTime\n}\n\ntype ChannelUnread {\n teamId: String\n channelId: String\n msgCount: Int\n mentionCount: Int\n mentionCountRoot: Int\n msgCountRoot: Int\n notifyProps: AnyObject\n}\n\n\ninput ChannelFilterInput {\n nameFilter: String\n privacy: ChannelPrivacy\n joinedChannels: Boolean\n storyBy: ChannelSort\n}\n\ninput ChannelNameAndDirect {\n name: String!\n direct: Boolean!\n}\n\nenum ChannelSort {\n NAME\n NUMBER_OF_MESSAGES\n}\n\nenum ChannelPrivacy {\n PRIVATE\n PUBLIC\n ALL\n}\n\nenum RoomType {\n CHANNEL\n DIRECT\n GROUP\n PRIVATE\n VISITOR\n}\n\nextend type Query {\n channelByName(name: String!): Channel @addAccountContext @isAuthenticated\n channels(filter: ChannelFilterInput = {\n privacy: ALL,\n joinedChannels: false,\n sortyBy: NAME\n }): [Channel] @addAccountContext @isAuthenticated\n channelsByUser: [Channel] @addAccountContext @isAuthenticated\n directChannel(id: ID!): Channel @addAccountContext @isAuthenticated\n}\n\nextend type Mutation {\n createChannel(\n name: String!,\n description:String!\n ): Channel @addAccountContext @isAuthenticated\n\n createDirectChannel(\n receiver: [ID]!\n displayName: String!\n ): Channel @addAccountContext @isAuthenticated\n\n hideChannel(id: ID!): Boolean @isAuthenticated\n\n leaveChannel(id: ID!): Boolean @isAuthenticated\n}\n");
669
+ /* harmony default export */ __webpack_exports__["default"] = ("type Channel implements IBaseRepo {\n id: String!\n title: String\n topic: String\n purpose: String\n description: String\n displayName: String\n team: AccountTeam\n lastPostAt: DateTime\n totalMsgCount: Int\n totalMsgCountRoot: Int\n creator: UserAccount\n members: [ChannelMember]\n type: String\n createdAt: DateTime\n updatedAt: DateTime\n deletedAt: DateTime\n}\n\ntype ChannelUnread {\n teamId: String\n channelId: String\n msgCount: Int\n mentionCount: Int\n mentionCountRoot: Int\n msgCountRoot: Int\n notifyProps: AnyObject\n}\n\n\ninput ChannelFilterInput {\n nameFilter: String\n privacy: ChannelPrivacy\n joinedChannels: Boolean\n storyBy: ChannelSort\n}\n\ninput ChannelNameAndDirect {\n name: String!\n direct: Boolean!\n}\n\nenum ChannelSort {\n NAME\n NUMBER_OF_MESSAGES\n}\n\nenum ChannelPrivacy {\n PRIVATE\n PUBLIC\n ALL\n}\n\nenum RoomType {\n CHANNEL\n DIRECT\n GROUP\n PRIVATE\n VISITOR\n}\n\nextend type Query {\n channelByName(name: String!): Channel @addAccountContext @isAuthenticated\n channels(filter: ChannelFilterInput = {\n privacy: ALL,\n joinedChannels: false,\n sortyBy: NAME\n }): [Channel] @addAccountContext @isAuthenticated\n channelsByUser: [Channel] @addAccountContext @isAuthenticated\n directChannel(id: ID!): Channel @addAccountContext @isAuthenticated\n}\n\nextend type Mutation {\n createChannel(\n name: String!,\n description:String!\n ): Channel @addAccountContext @isAuthenticated\n\n addMemberToChannel(\n channelId: String!,\n memberId: String!\n ): Channel @addAccountContext @isAuthenticated\n\n createDirectChannel(\n receiver: [ID]!\n displayName: String!\n ): Channel @addAccountContext @isAuthenticated\n\n hideChannel(id: ID!): Boolean @isAuthenticated\n\n leaveChannel(id: ID!): Boolean @isAuthenticated\n\n deleteChannel(id: ID!): Boolean @isAuthenticated\n}\n");
664
670
 
665
671
  /***/ }),
666
672
 
@@ -1001,8 +1007,32 @@ let ChannelService = class ChannelService extends base_service_1.BaseService {
1001
1007
  }
1002
1008
  return this.repository.create(channel);
1003
1009
  }
1010
+ async addMemberToChannel(channelId, memberId) {
1011
+ // const { channelId, memberId } = data;
1012
+ // console.log('==============================', channelId);
1013
+ const resData = await this.repository
1014
+ .get({ id: channelId })
1015
+ .then(async (res) => {
1016
+ const mebs = res.members;
1017
+ mebs.push({
1018
+ id: '',
1019
+ user: memberId,
1020
+ schemeAdmin: false,
1021
+ notifyProps: ChannelService.defaultNotifyProps,
1022
+ });
1023
+ const objToUpdate = res;
1024
+ objToUpdate.members = mebs;
1025
+ const finalResult = await this.repository
1026
+ .update({ id: channelId }, objToUpdate, { overwrite: true })
1027
+ .then((response) => response)
1028
+ .catch((error) => error);
1029
+ return finalResult;
1030
+ })
1031
+ .catch((err) => err);
1032
+ return resData;
1033
+ }
1004
1034
  async saveChannel(data) {
1005
- const { type, team } = data;
1035
+ const { type, team, creator } = data;
1006
1036
  if (type !== core_1.IRoomType.CHANNEL) {
1007
1037
  return new Error('Invalid Channel Type');
1008
1038
  }
@@ -1012,7 +1042,14 @@ let ChannelService = class ChannelService extends base_service_1.BaseService {
1012
1042
  if (!canAddNewChannel) {
1013
1043
  return Error(`Only max of ${maxChannels} allowed`);
1014
1044
  }
1015
- return this.repository.create(data);
1045
+ const channelPayload = Object.assign(Object.assign({}, data), { members: [
1046
+ {
1047
+ user: creator,
1048
+ schemeAdmin: false,
1049
+ notifyProps: ChannelService.defaultNotifyProps,
1050
+ },
1051
+ ] });
1052
+ return this.repository.create(channelPayload);
1016
1053
  }
1017
1054
  async getChannelUnread(channelId, userId) {
1018
1055
  const channel = await this.repository.get({
@@ -1088,6 +1125,9 @@ let ChannelService = class ChannelService extends base_service_1.BaseService {
1088
1125
  // },
1089
1126
  });
1090
1127
  }
1128
+ deleteChannel(id) {
1129
+ return this.repository.delete({ id });
1130
+ }
1091
1131
  };
1092
1132
  ChannelService = __decorate([
1093
1133
  __param(0, inversify_1.inject(constants_1.TYPES.ChannelRepository)),
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/default-notify-props.ts","webpack:///./src/constants/index.ts","webpack:///./src/constants/query.constants.ts","webpack:///./src/constants/types.ts","webpack:///./src/containers/containers.ts","webpack:///./src/containers/context-services-from-container.ts","webpack:///./src/containers/index.ts","webpack:///./src/graphql/index.ts","webpack:///./src/graphql/resolvers/channel-member.ts","webpack:///./src/graphql/resolvers/channel.ts","webpack:///./src/graphql/resolvers/index.ts","webpack:///./src/graphql/resolvers/post-thread.ts","webpack:///./src/graphql/resolvers/post.ts","webpack:///./src/graphql/resolvers/primitive-resolvers.ts","webpack:///./src/graphql/resolvers/reaction.ts","webpack:///./src/graphql/schema/base.graphql","webpack:///./src/graphql/schema/channel-member.graphql","webpack:///./src/graphql/schema/channel.graphql","webpack:///./src/graphql/schema/index.ts","webpack:///./src/graphql/schema/post-thread.graphql","webpack:///./src/graphql/schema/post.graphql","webpack:///./src/graphql/schema/preferences.graphql","webpack:///./src/graphql/schema/reaction.graphql","webpack:///./src/graphql/schema/users.graphql","webpack:///./src/index.ts","webpack:///./src/module.ts","webpack:///./src/services/base-service.ts","webpack:///./src/services/channel-service.ts","webpack:///./src/services/index.ts","webpack:///./src/services/post-service.ts","webpack:///./src/services/post-thread-service.ts","webpack:///./src/services/reaction-service.ts","webpack:///./src/store/index.ts","webpack:///./src/store/models/channel.ts","webpack:///./src/store/models/common-options.ts","webpack:///./src/store/models/index.ts","webpack:///./src/store/models/post-thread.ts","webpack:///./src/store/models/post.ts","webpack:///./src/store/models/reaction.ts","webpack:///./src/store/repositories/base-repository.ts","webpack:///./src/store/repositories/channel-repository.ts","webpack:///./src/store/repositories/index.ts","webpack:///./src/store/repositories/post-repository.ts","webpack:///./src/store/repositories/post-thread-repository.ts","webpack:///./src/store/repositories/reaction-repository.ts","webpack:///external \"@adminide-stack/account-api-server\"","webpack:///external \"@adminide-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@messenger-box/core\"","webpack:///external \"graphql-iso-date\"","webpack:///external \"inversify\"","webpack:///external \"lodash\"","webpack:///external \"mongoose\""],"names":[],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","export const DEFAULT_NOTIFY_PROPS = {\n desktopNotifyProp: true,\n markUnreadNotifyProp: true,\n pushNotifyProp: true,\n emailNotifyProp: true,\n ignoreChannelMentionsNotifyProp: true,\n};\n","export * from './types';\nexport * from './query.constants';\nexport * from './default-notify-props';\n","export enum PAGINATION_OPTIONS {\n limit = 10,\n skip = 0,\n}\n\nexport const DEFAULT_SORTING = {\n id: 'asc',\n};\n","export const TYPES = {\n BaseRepository: Symbol('BaseRepository'),\n BaseService: Symbol('BaseService'),\n\n ChannelRepository: Symbol('ChannelRepository'),\n PostRepository: Symbol('PostRepository'),\n PostThreadRepository: Symbol('PostThreadRepository'),\n ReactionRepository: Symbol('ReactionRepository'),\n\n ChannelService: Symbol('ChannelService'),\n PostService: Symbol('PostService'),\n PostThreadService: Symbol('PostThreadService'),\n ReactionService: Symbol('ReactionService'),\n};\n","import { ContainerModule, interfaces } from 'inversify';\nimport { ChannelService, PostService, PostThreadService, ReactionService } from '../services';\nimport { TYPES } from '../constants';\nimport {\n IPostService,\n IPostRepository,\n IPostThreadService,\n IPostThreadRepository,\n IChannelRepository,\n IChannelService,\n IReactionService,\n IReactionRepository,\n} from '../interfaces';\nimport { ChannelRepository, PostRepository, PostThreadRepository, ReactionRepository } from '../store';\n\n/**\n * Local services and exposed micro services to serve remote connections.\n * Operates within in the Gateway.\n *\n * @param settings Settings\n */\nexport const localContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetNamed('proxy');\n });\n\n/**\n * Operates external to the Gateway. Usually a broker listen to calls and invoke this service\n * local to the micro container.\n *\n * @param settings Settings\n */\nexport const externalContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetIsDefault();\n });\n","import { interfaces } from 'inversify';\nimport { IChannelService, IPostService, IPostThreadService, IReactionService, IServices } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport const contextServicesFromContainer = (container: interfaces.Container): IServices => ({\n channelService: container.get<IChannelService>(TYPES.ChannelService),\n postService: container.get<IPostService>(TYPES.PostService),\n postThreadService: container.get<IPostThreadService>(TYPES.PostThreadService),\n reactionService: container.get<IReactionService>(TYPES.ReactionService),\n});\n","export * from './containers';\nexport * from './context-services-from-container';\n","export * from './schema';\nexport * from './resolvers';\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelMemberResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { IChannel, IResolvers, IRoomType } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelResolvers = (): IResolvers<IContext> => ({\n Query: {\n channelByName(src, { name }, { channelService, userContext }) {\n return channelService.getByName(userContext.teamId, name) as Promise<IChannel>;\n },\n channels(src, _, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.getChannels(teamId, accountId, false, new Date().getTime()) as Promise<IChannel[]>;\n },\n channelsByUser(src, _, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.getAll({\n criteria: {\n creator: accountId,\n },\n }) as Promise<IChannel[]>;\n },\n directChannel(src, { id }, { channelService, userContext }) {\n return channelService.get({\n criteria: {\n id,\n user: userContext.accountId,\n type: IRoomType.DIRECT,\n },\n }) as Promise<IChannel>;\n },\n },\n Mutation: {\n createChannel(src, { name, description }, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.saveChannel({\n type: IRoomType.CHANNEL,\n creator: accountId,\n title: name,\n topic: name,\n team: teamId,\n description,\n }) as Promise<IChannel>;\n },\n createDirectChannel(src, { receiver, displayName }, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.createDirectChannel({\n sender: accountId,\n receiver,\n displayName,\n }) as Promise<IChannel>;\n },\n hideChannel(src, { id }, { channelService }) {\n return channelService.hideChannel(id);\n },\n leaveChannel(src, { id }, { channelService }) {\n return channelService.leaveChannel(id);\n },\n },\n});\n","import { primitiveResolvers } from './primitive-resolvers';\nimport { channelResolvers } from './channel';\nimport { channelMemberResolvers } from './channel-member';\nimport { postResolvers } from './post';\nimport { postThreadResolvers } from './post-thread';\nimport { reactionResolvers } from './reaction';\n\nexport const messengerResolvers = [\n primitiveResolvers,\n channelResolvers,\n channelMemberResolvers,\n postResolvers,\n postThreadResolvers,\n reactionResolvers,\n];\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const postThreadResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { IResolvers, ISortEnum } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const postResolvers = (): IResolvers<IContext> => ({\n Post: {\n editedBy(src, args, { accountService }) {\n return accountService.findAccountById(src.editedBy.toString());\n },\n author(src, args, { accountService }) {\n const author = src.author?.toString();\n if (author) {\n return accountService.findAccountById(author);\n }\n return accountService.findAccountById(src.editedBy.toString());\n },\n channel(src, args, { channelService }) {\n return channelService.get(src.channel.toString());\n },\n },\n Query: {\n messages(src, { channelId, limit, skip }, { postService, userContext }) {\n return postService.getAllWithCount({\n criteria: {\n channel: channelId,\n },\n limit,\n skip,\n sort: {\n key: 'createdAt',\n value: ISortEnum.ASC,\n },\n });\n },\n },\n Mutation: {\n deleteMessage(src, { messageId }, { postService }) {\n const { channelId, messageId: id } = messageId;\n return postService.delete({\n channel: channelId,\n id,\n });\n },\n editMessage(src, { messageId, messageInput }, { postService, userContext }) {\n return postService.update(messageId.messageId, {\n message: messageInput.content,\n editedBy: userContext.accountId,\n channel: messageId.channelId,\n } as any);\n },\n sendMessage(src, { channelId, messageInput }, { postService, userContext }) {\n return postService.create({\n channel: channelId,\n message: messageInput.content,\n editedBy: userContext.accountId,\n author: userContext.accountId,\n } as any);\n },\n // pinMessage(src , { messageId , messageInput} , {postService , userContext}) {\n // return postService.update(messageId.messageId, {\n // isPinned : messageInput.isPinned,\n // pinnedBy : userContext.accountId,\n // channel : messageId.channelId\n // } as any)\n // }\n },\n});\n","import { GraphQLDate, GraphQLTime, GraphQLDateTime } from 'graphql-iso-date';\n\nexport const primitiveResolvers = () => ({\n Date: GraphQLDate,\n Time: GraphQLTime,\n DateTime: GraphQLDateTime,\n});\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const reactionResolvers = (): IResolvers<IContext> => ({\n Query: {\n getPostReactions(src, { message }, { reactionService, userContext }) {\n return reactionService.getAll({\n criteria: {\n post: message,\n user: userContext.accountId,\n },\n });\n },\n },\n Mutation: {\n addReactionToMessage(src, { reaction }, { reactionService, userContext }) {\n return reactionService.create({\n ...reaction,\n user: userContext.accountId,\n });\n },\n updateReactionToMessage(src, { reaction, id }, { reactionService }) {\n return reactionService.update(id, { reaction });\n },\n removeReactionFromMessage(src, { id }, { reactionService }) {\n return reactionService.delete(id);\n },\n },\n});\n","export default \"interface IBaseRepo {\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput Sort{\\n key: String!,\\n value: SortEnum!,\\n}\\n\\nenum SortEnum{\\n ASC,\\n DESC\\n}\";","export default \"type ChannelMember {\\n id: ID!\\n user: String!\\n roles: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n explicitRoles: String\\n schemeAdmin: Boolean\\n lastViewedAt: Int\\n updatedAt: DateTime,\\n CreatedAt: DateTime,\\n}\\n\\ninput ChannelMemberInput {\\n userId: String!\\n roles: String\\n notifyProps: AnyObject\\n schemeGuest: Boolean\\n schemeUser: Boolean\\n schemeAdmin: Boolean\\n explicitRoles: String\\n}\\n\";","export default \"type Channel implements IBaseRepo {\\n id: String!\\n title: String\\n topic: String\\n purpose: String\\n description: String\\n displayName: String\\n team: AccountTeam\\n lastPostAt: DateTime\\n totalMsgCount: Int\\n totalMsgCountRoot: Int\\n creator: UserAccount\\n members: [ChannelMember]\\n type: String\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ntype ChannelUnread {\\n teamId: String\\n channelId: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n}\\n\\n\\ninput ChannelFilterInput {\\n nameFilter: String\\n privacy: ChannelPrivacy\\n joinedChannels: Boolean\\n storyBy: ChannelSort\\n}\\n\\ninput ChannelNameAndDirect {\\n name: String!\\n direct: Boolean!\\n}\\n\\nenum ChannelSort {\\n NAME\\n NUMBER_OF_MESSAGES\\n}\\n\\nenum ChannelPrivacy {\\n PRIVATE\\n PUBLIC\\n ALL\\n}\\n\\nenum RoomType {\\n CHANNEL\\n DIRECT\\n GROUP\\n PRIVATE\\n VISITOR\\n}\\n\\nextend type Query {\\n channelByName(name: String!): Channel @addAccountContext @isAuthenticated\\n channels(filter: ChannelFilterInput = {\\n privacy: ALL,\\n joinedChannels: false,\\n sortyBy: NAME\\n }): [Channel] @addAccountContext @isAuthenticated\\n channelsByUser: [Channel] @addAccountContext @isAuthenticated\\n directChannel(id: ID!): Channel @addAccountContext @isAuthenticated\\n}\\n\\nextend type Mutation {\\n createChannel(\\n name: String!,\\n description:String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n createDirectChannel(\\n receiver: [ID]!\\n displayName: String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n hideChannel(id: ID!): Boolean @isAuthenticated\\n\\n leaveChannel(id: ID!): Boolean @isAuthenticated\\n}\\n\";","import baseSchema from './base.graphql';\nimport channelSchema from './channel.graphql';\nimport channelMember from './channel-member.graphql';\nimport postSchema from './post.graphql';\nimport postThread from './post-thread.graphql';\nimport preferencesSchema from './preferences.graphql';\nimport usersSchema from './users.graphql';\nimport reactionSchema from './reaction.graphql';\n\nconst schema = [\n baseSchema,\n channelSchema,\n channelMember,\n postSchema,\n postThread,\n preferencesSchema,\n usersSchema,\n reactionSchema,\n].join('\\n');\n\nexport { schema };\n","export default \"type PostThread{\\n post: Post,\\n channel: Channel,\\n replyCount: Int,\\n lastReplyAt: DateTime,\\n participants:[UserAccount]\\n}\\n\";","export default \"type Post implements IBaseRepo {\\n id: String\\n author: UserAccount\\n channel: Channel\\n\\n rootId: String\\n parentId: String\\n originalId: String\\n\\n \\\"\\\"\\\" Post sent by server e.g. User joined channel \\\"\\\"\\\"\\n fromServer: Boolean\\n\\n message: String\\n type: String\\n props: AnyObject\\n hashTags: String\\n\\n filenames: [String]\\n fields: [String]\\n reactions: [Reaction]\\n\\n editedBy: UserAccount\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput MessageInput {\\n content: String!\\n userRef: [String] #userId\\n channelRef: [String] #channelId\\n}\\n\\ninput MessageIdentifier {\\n channelId: String!\\n messageId: String!\\n}\\n\\ntype PostsWithCursor {\\n cursor: String\\n channel: Channel\\n posts: [Post]\\n}\\n\\ntype Messages{\\n totalCount: Int,\\n data:[Post]\\n}\\n\\n\\nextend type Query {\\n messages(\\n channelId: ID,\\n# channelName: String,\\n# directTo: ID,\\n limit: Int,\\n skip: Int,\\n# searchRegex: String,\\n# excludeServer: Boolean\\n ): Messages! @isAuthenticated @addAccountContext\\n}\\n\\nextend type Mutation {\\n deleteMessage(messageId: MessageIdentifier!): Boolean @isAuthenticated\\n\\n editMessage(messageId: MessageIdentifier!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n\\n sendMessage(channelId: String!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n}\\n\\nextend type Subscription {\\n chatMessageAdded(channelId: String, directTo: String): Post @isAuthenticated @addAccountContext\\n}\\n\";","export default \"\\n\\ntype ChannelSettings {\\n disableNotification: Boolean\\n audio: String\\n desktop: String\\n duration: Int\\n mobile: String\\n mail: String\\n hideUnreadRoomStatus : Boolean\\n unreadTrayIconAlret: String\\n}\\n\\nextend type Preference_Account {\\n language: String\\n notificationDuration: Float\\n unreadTrayIconAlert: Boolean\\n useEmojis: Boolean\\n convertAsciiToEmoji: Boolean\\n autoLoadImages: Boolean\\n saveMobileBandwith: Boolean\\n collapseEmbeddedMeida: Boolean\\n unreadRoomsMode: Boolean\\n hideUserName: Boolean\\n hideRoles: Boolean\\n hideRightSideBarWithClick: Boolean\\n hideAvatars: Boolean\\n mergePrivateGroupsWithChannels: Boolean\\n enterKeyBehaviour: String\\n viewMode: String\\n offlineEmailNotifications: String\\n highlights: String\\n newRoomNotificationSound: String\\n newMessageNotificationSound: String\\n email: String\\n avatar: String\\n name: String\\n}\\n\\nextend type Preferences {\\n channel: ChannelSettings\\n}\\n\";","export default \"type Reaction{\\n id:ID!\\n reaction:String!,\\n user: UserAccount!,\\n post: Post!\\n}\\n\\ninput ReactionInput{\\n reaction:String!,\\n post: String!\\n}\\n\\nextend type Query{\\n getPostReactions(message:ID!):[Reaction] @isAuthenticated\\n}\\nextend type Mutation{\\n addReactionToMessage(reaction:ReactionInput):Reaction @isAuthenticated @addAccountContext\\n updateReactionToMessage(id:ID!, reaction:String!):Reaction @isAuthenticated @addAccountContext\\n removeReactionFromMessage(id:ID!):Boolean @isAuthenticated @addAccountContext\\n}\\n\";","export default \"\\nenum MessengerUserStatus {\\n ONLINE\\n AWAY\\n BUSY\\n INVISIBLE\\n}\\n\\ntype MessengerUser implements IUser {\\n id: ID!\\n username: String\\n email: String\\n status: MessengerUserStatus\\n avatar: String\\n name: String\\n lastLogin: String\\n channels: [Channel]\\n directMessages: [Channel]\\n}\";","/* eslint-disable import/no-extraneous-dependencies */\nimport { Feature } from '@common-stack/server-core';\nimport MessengerModule from './module';\n\nexport * from './constants';\nexport default new Feature(MessengerModule);\n","import { Feature } from '@common-stack/server-core';\nimport { schema, messengerResolvers } from './graphql';\nimport { localContainerModule, externalContainerModule, contextServicesFromContainer } from './containers';\n\nexport default new Feature({\n schema,\n createResolversFunc: messengerResolvers,\n createServiceFunc: contextServicesFromContainer,\n createContainerFunc: [externalContainerModule],\n createHemeraContainerFunc: [localContainerModule],\n addBrokerMainServiceClass: [],\n});\n","import { Document, FilterQuery } from 'mongoose';\nimport { injectable } from 'inversify';\nimport { GetAllArgs, IBaseRepository, IBaseService } from '../interfaces';\n\n@injectable()\nexport class BaseService<T, C = T, U = T> implements IBaseService<T, C, U> {\n constructor(protected repository: IBaseRepository<T>) {\n this.repository = repository;\n }\n\n async getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{ data: T[]; totalCount: number }> {\n const totalCount = await this.count(options.criteria);\n const data = await this.getAll(options);\n return {\n totalCount,\n data,\n };\n }\n\n count(conditions?: FilterQuery<Document<T>>): Promise<number> {\n return this.repository.count(conditions);\n }\n\n get(conditions: string | FilterQuery<Document<T>>): Promise<T> {\n if (typeof conditions === 'string') {\n return this.repository.get({ id: conditions });\n }\n return this.repository.get(conditions);\n }\n\n getName(name: string): Promise<T> {\n return this.repository.get({ name });\n }\n\n getAll(options: GetAllArgs<Document<T>>): Promise<T[]> {\n return this.repository.getAll(options);\n }\n\n create(data: C): Promise<T> {\n return this.repository.create<C>(data);\n }\n\n bulkCreate(data: C[]): Promise<T[]> {\n return this.repository.bulkCreate<C>(data);\n }\n\n async update(id: string, data: U, overwrite = true): Promise<T> {\n return this.repository.update<U>({ id }, data, { overwrite });\n }\n\n insert(data: (C | U) & { id?: string }, overwrite = true): Promise<T> {\n const { id, ...rest } = data;\n if (id) {\n const existing = this.repository.get({ id });\n if (existing) {\n return this.update(id, rest as U, overwrite);\n }\n }\n return this.create(rest as C);\n }\n\n delete(id: string | FilterQuery<Document<T>>): Promise<boolean> {\n if (typeof id === 'string') {\n return this.repository.delete({ id });\n }\n return this.repository.delete(id);\n }\n}\n","import { inject } from 'inversify';\nimport { IChannel, IChannelUnread, IPost, IRoomType, ISortEnum } from '@messenger-box/core';\nimport { IAccountService, ITeamService, TYPES as ADMINIDE_TYPES } from '@adminide-stack/account-api-server';\nimport { IConfigurationService } from '@adminide-stack/platform-server';\nimport { ServerTypes } from '@adminide-stack/core';\nimport { BaseService } from './base-service';\nimport { DEFAULT_NOTIFY_PROPS, TYPES } from '../constants';\nimport {\n IChannelRepository,\n ICreateDirectChannelParams,\n INotificationProps,\n IPostService,\n ISaveChannelParams,\n ISaveDirectChannelParams,\n} from '../interfaces';\n\nexport class ChannelService extends BaseService<IChannel, Omit<IChannel, 'id'>> {\n constructor(\n @inject(TYPES.ChannelRepository)\n readonly repository: IChannelRepository,\n @inject(ADMINIDE_TYPES.IAccountService)\n private readonly accountService: IAccountService,\n @inject(ADMINIDE_TYPES.ITeamService)\n private readonly teamsService: ITeamService,\n @inject(TYPES.PostService)\n private readonly postService: IPostService,\n @inject(ServerTypes.IConfigurationService)\n private readonly configService: IConfigurationService,\n ) {\n super(repository);\n }\n\n private static getDmNameFromIds(senderId: string, receiverId: string) {\n return `${senderId}__${receiverId}`;\n }\n\n private static get defaultNotifyProps(): INotificationProps {\n // #Todo: To be moved to settings\n return DEFAULT_NOTIFY_PROPS;\n }\n\n private getMaxChannelsPerTeam(teamId: string): Promise<number> {\n // #Todo: Get Max Channel per team from Team settings\n return Promise.resolve(10);\n }\n\n private async getCurrentChannelCountPerTeam(team: string) {\n return this.repository.count({\n team,\n type: IRoomType.CHANNEL,\n });\n }\n\n async createDirectChannel(data: ICreateDirectChannelParams): Promise<IChannel | Error> {\n const { sender, receiver, displayName } = data;\n const chlMember = [\n {\n user: sender,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n ];\n receiver.forEach((re) => {\n chlMember.push({\n user: re,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n });\n });\n const channelPayload: ISaveDirectChannelParams = {\n title: sender.split('').reverse().join(''),\n type: IRoomType.DIRECT,\n creator: sender,\n members: chlMember,\n displayName,\n };\n return this.saveDirectChannel(channelPayload);\n }\n\n async saveDirectChannel(channel: ISaveDirectChannelParams): Promise<IChannel | Error> {\n const { type, deletedAt } = channel;\n if (deletedAt) {\n return new Error('Deleted Channel can not be saved');\n }\n if (type !== IRoomType.DIRECT) {\n return new Error('Only direct channels are allowed');\n }\n return this.repository.create(channel);\n }\n\n async saveChannel(data: ISaveChannelParams): Promise<IChannel | Error> {\n const { type, team } = data;\n if (type !== IRoomType.CHANNEL) {\n return new Error('Invalid Channel Type');\n }\n const maxChannels = await this.getMaxChannelsPerTeam(team);\n const currentChannels = await this.getCurrentChannelCountPerTeam(team);\n const canAddNewChannel = currentChannels < maxChannels;\n if (!canAddNewChannel) {\n return Error(`Only max of ${maxChannels} allowed`);\n }\n return this.repository.create(data);\n }\n\n async getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error> {\n const channel: IChannel = await this.repository.get({\n id: channelId,\n members: { user: userId },\n });\n const { members, team, id } = channel;\n const member = members.find((i) => i.user === userId);\n const msgCount = channel.totalMsgCount - member.msgCount;\n const msgCountRoot = channel.totalMsgCountRoot - member.msgCountRoot;\n const { notifyProps, mentionCountRoot, mentionCount } = member;\n\n return {\n channelId: id,\n teamId: team.toString(),\n msgCount,\n msgCountRoot,\n mentionCount,\n notifyProps,\n mentionCountRoot,\n };\n }\n\n async getPinnedPosts(channelId: string): Promise<IPost[] | Error> {\n const posts = await this.postService.getAll({\n criteria: {\n channelId,\n isPinned: true,\n },\n sort: {\n key: 'CreatAt',\n value: ISortEnum.ASC,\n },\n });\n const replyCounts = await Promise.all(\n posts.map((post) => this.postService.count({ rootId: post.rootId || post.id })),\n );\n return posts.reduce((acc, curr, index) => [...acc, { ...curr, replyCount: replyCounts[index] }], []);\n }\n\n restore(channelId: string, time: Date): Promise<IChannel> {\n return this.repository.update(\n { id: channelId },\n {\n deletedAt: time,\n },\n );\n }\n\n getByName(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n });\n }\n\n getByNameIncludeDeleted(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n deletedAt: true,\n });\n }\n\n getByNames(team: string, titles: string[]): Promise<IChannel[] | Error> {\n return this.getAll({\n criteria: {\n team,\n title: { $in: titles },\n },\n });\n }\n\n getChannelCounts(team: string, user: string): Promise<any> {\n return this.count({\n team,\n members: { user },\n });\n }\n\n getChannels(\n team: string,\n user: string,\n includeDeleted: boolean,\n lastDeleteAt: number,\n ): Promise<IChannel[] | Error> {\n return this.repository.getAll({\n // criteria: {\n // team,\n // members: { user },\n // },\n });\n }\n}\n","export * from './channel-service';\nexport * from './post-service';\nexport * from './post-thread-service';\nexport * from './reaction-service';\n","import { inject } from 'inversify';\nimport { IPost } from '@messenger-box/core';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { PostRepository } from '../store';\n\nexport class PostService extends BaseService<IPost> {\n constructor(\n @inject(TYPES.PostRepository)\n repository: PostRepository,\n ) {\n super(repository);\n }\n}\n","import { IPostThread } from '@messenger-box/core';\nimport { injectable, inject } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IPostThreadRepository, IPostThreadService } from '../interfaces';\n\n@injectable()\nexport class PostThreadService extends BaseService<IPostThread> implements IPostThreadService {\n constructor(\n @inject(TYPES.PostThreadRepository)\n readonly repository: IPostThreadRepository,\n ) {\n super(repository);\n }\n}\n","import { IReaction, IReactionInput } from '@messenger-box/core';\nimport { inject, injectable } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IReactionRepository, IReactionService, IReactionServiceInput } from '../interfaces';\n\n@injectable()\nexport class ReactionService\n extends BaseService<IReaction, IReactionServiceInput, Partial<IReactionInput>>\n implements IReactionService\n{\n constructor(\n @inject(TYPES.ReactionRepository)\n readonly reactionRepository: IReactionRepository,\n ) {\n super(reactionRepository);\n }\n}\n","export * from './repositories';\n","import { Connection, Document, Model, Schema } from 'mongoose';\nimport { IChannel, IRoomType } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IChannelModel = Document<IChannel>;\n\nconst channelModelSchema = new Schema(\n {\n type: {\n type: Schema.Types.String,\n enum: [IRoomType.CHANNEL, IRoomType.DIRECT, IRoomType.GROUP, IRoomType.PRIVATE, IRoomType.VISITOR],\n required: true,\n },\n members: [\n new Schema(\n {\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n roles: { type: Schema.Types.String },\n msgCount: { type: Schema.Types.Number },\n mentionCount: { type: Schema.Types.Number },\n mentionCountRoot: { type: Schema.Types.Number },\n msgCountRoot: { type: Schema.Types.Number },\n notifyProps: { type: Schema.Types.Mixed },\n explicitRoles: { type: Schema.Types.String },\n schemeAdmin: { type: Schema.Types.String },\n lastViewedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n },\n commonModeSchemaOptions,\n ),\n ],\n deletedAt: { type: Schema.Types.Date },\n lastPostAt: { type: Schema.Types.Date },\n totalMsgCount: { type: Schema.Types.Number },\n totalMsgCountRoot: { type: Schema.Types.Number },\n team: { type: Schema.Types.ObjectId, ref: 'team' },\n title: { type: Schema.Types.String },\n displayName: { type: Schema.Types.String },\n description: { type: Schema.Types.String },\n purpose: { type: Schema.Types.String },\n creator: { type: Schema.Types.ObjectId, ref: 'accounts' },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(channelModelSchema);\n\nexport type ChannelModelType = Model<IChannelModel>;\nexport const ChannelModelFunc: (db: Connection) => ChannelModelType = (db) =>\n db.model<IChannelModel>('channel', channelModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { Schema } from 'mongoose';\n\nexport const commonModeSchemaOptions = {\n timestamps: true,\n toJSON: {\n virtuals: true,\n },\n toObject: {\n virtuals: true,\n getters: true,\n transform(doc, ret) {\n delete ret.__v;\n delete ret._id;\n },\n },\n};\n\nexport const addIdVirtualFields = (schema: Schema) => {\n schema.set('toJSON', {\n virtuals: true,\n });\n return schema;\n};\n","export * from './channel';\nexport * from './post';\nexport * from './post-thread';\nexport * from './reaction';\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPostThread } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IThreadsModel = Document<IPostThread>;\n\nconst postThreadModelSchema = new Schema(\n {\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n replyCount: { type: Schema.Types.Number },\n lastReplyAt: { type: Schema.Types.Date },\n participants: [{ type: Schema.Types.ObjectId, ref: 'accounts' }],\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postThreadModelSchema);\n\nexport type PostThreadModelType = Model<IThreadsModel>;\nexport const PostThreadModelFunc: (db: Connection) => PostThreadModelType = (db) =>\n db.model<IThreadsModel>('post-threads', postThreadModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPost } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IPostModel = Document<IPost>;\n\nconst postModelSchema = new Schema(\n {\n createdAt: { type: Schema.Types.Date },\n editedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n editedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\n // isPinned goes to settings\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n rootId: { type: Schema.Types.String },\n parentId: { type: Schema.Types.String },\n originalId: { type: Schema.Types.String },\n message: { type: Schema.Types.String },\n type: { type: Schema.Types.String },\n props: { type: Schema.Types.Mixed },\n hashtags: { type: Schema.Types.Mixed },\n filenames: { type: Schema.Types.Mixed },\n fields: { type: Schema.Types.String },\n hasReactions: { type: Schema.Types.Boolean },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postModelSchema);\n\nexport type PostModelType = Model<IPostModel>;\nexport const PostModelFunc: (db: Connection) => PostModelType = (db) => db.model<IPostModel>('posts', postModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IReaction } from '@messenger-box/core';\nimport { addIdVirtualFields } from './common-options';\n\nexport type IReactionModel = Document<IReaction>;\n\nconst reactionModelSchema = new Schema({\n createdAt: { type: Schema.Types.Date },\n reaction: { type: Schema.Types.String },\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n});\n\naddIdVirtualFields(reactionModelSchema);\n\nexport type ReactionModelType = Model<IReactionModel>;\nexport const ReactionModelFunc: (db: Connection) => ReactionModelType = (db) =>\n db.model<IReactionModel>('reactions', reactionModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { mergeWith, isObject } from 'lodash';\nimport { logger as Logger } from '@cdm-logger/server';\n// eslint-disable-next-line import/no-unresolved\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { Connection, Document, FilterQuery, Model } from 'mongoose';\nimport { injectable, unmanaged } from 'inversify';\nimport { GetAllArgs, IBaseRepository } from '../../interfaces';\nimport { DEFAULT_SORTING, PAGINATION_OPTIONS } from '../../constants';\n\n@injectable()\nexport class BaseRepository<T, D = Document<T>> implements IBaseRepository<T, D> {\n private options: IMongoOptions;\n\n private logger: typeof Logger;\n\n private model: Model<D>;\n\n constructor(\n @unmanaged()\n modelFunc: (db: Connection) => Model<D>,\n @unmanaged()\n db: Connection,\n @unmanaged()\n logger: typeof Logger,\n @unmanaged()\n options?: IMongoOptions,\n ) {\n this.model = modelFunc(db);\n this.options = options;\n this.logger = logger.child({ className: BaseRepository.name });\n }\n\n public async getAll(options: GetAllArgs<D>): Promise<T[]> {\n try {\n const { criteria, selectedFields, sort, limit, skip } = options;\n // map id to mongoose _id\n const { id, ...rest } = criteria || { id: undefined };\n const response = await this.model\n .find({ ...rest, ...(id ? { _id: id } : {}) }, selectedFields)\n .limit(limit || PAGINATION_OPTIONS.limit)\n .skip(skip || PAGINATION_OPTIONS.skip)\n .sort(isObject(sort) ? { [sort?.key]: sort.value } : DEFAULT_SORTING)\n .exec();\n return response.map((i) => i?.toObject()) as T[];\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(options)}`);\n throw e;\n }\n }\n\n public async count(conditions?: FilterQuery<D>): Promise<number> {\n return this.model.count(conditions).exec();\n }\n\n public async get(conditions?: FilterQuery<D>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async find(conditions: Partial<FilterQuery<D>>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async create<I>(data: I): Promise<T> {\n try {\n const response = await this.model.create(data);\n return response.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to create Model with data ${JSON.stringify(data)} due to ${e?.message}`);\n throw e;\n }\n }\n\n public async bulkCreate<I>(data: I[]): Promise<T[]> {\n try {\n const response = await this.model.insertMany(data, {\n lean: true,\n ordered: true,\n });\n return response as unknown as T[];\n } catch (e) {\n this.logger.error(`Unable to bulk create due to error`, e.message);\n }\n }\n\n public async upsert<I>(conditions: FilterQuery<D>, update: I, options?: Record<string, unknown>): Promise<T> {\n return this.update<I>(conditions, update, {\n upsert: true,\n ...options,\n });\n }\n\n public async update<I>(criteria: FilterQuery<D>, update: I, options: Record<string, unknown>): Promise<T> {\n try {\n const { overWrite, ...remaining } = options;\n let old = {};\n if (!overWrite) {\n old = await this.get(criteria);\n if (!old) {\n throw Error(\n `(update) No existing record found for update with criteria ${JSON.stringify(criteria)}`,\n );\n }\n }\n return this.model.findOneAndUpdate(\n this.mapConditions(criteria),\n mergeWith(old, update, (obj, src) => {\n if (Array.isArray(src) && Array.isArray(obj)) {\n return src;\n }\n }),\n { new: true, useFindAndModify: false, ...remaining },\n ) as unknown as Promise<T>;\n } catch (e) {\n this.logger.error(`Unable to Update with criteria ${criteria} and data ${update}`);\n throw e;\n }\n }\n\n public async delete(criteria: FilterQuery<D>): Promise<boolean> {\n try {\n const deleted = await this.model.findOneAndDelete(this.mapConditions(criteria));\n return !!deleted;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria ${criteria}`);\n throw e;\n }\n }\n\n public async bulkDelete(criteria: FilterQuery<D>): Promise<number> {\n try {\n const deleted = await this.model.deleteMany(this.mapConditions(criteria));\n return deleted?.deletedCount || 0;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria ${criteria}`);\n throw e;\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n private mapConditions(conditions: FilterQuery<D>): FilterQuery<D> {\n const { id: _id, ...remaining } = conditions;\n return {\n ...(_id ? { _id } : {}),\n ...remaining,\n };\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\n// @ts-ignore\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IChannel } from '@messenger-box/core';\nimport { ChannelModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class ChannelRepository extends BaseRepository<IChannel> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(ChannelModelFunc, db, logger, options);\n }\n}\n","export * from './channel-repository';\nexport * from './post-repository';\nexport * from './post-thread-repository';\nexport * from './reaction-repository';\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IPost } from '@messenger-box/core';\nimport { PostModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class PostRepository extends BaseRepository<IPost> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(PostModelFunc, db, logger, options);\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IPostThread } from '@messenger-box/core';\nimport { PostThreadModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class PostThreadRepository extends BaseRepository<IPostThread> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(PostThreadModelFunc, db, logger, options);\n }\n}\n","import { IReaction } from '@messenger-box/core';\nimport { inject, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { ReactionModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\nimport { IReactionRepository } from '../../interfaces';\n\nexport class ReactionRepository extends BaseRepository<IReaction> implements IReactionRepository {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(ReactionModelFunc, db, logger, options);\n }\n}\n","module.exports = require(\"@adminide-stack/account-api-server\");","module.exports = require(\"@adminide-stack/core\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"@messenger-box/core\");","module.exports = require(\"graphql-iso-date\");","module.exports = require(\"inversify\");","module.exports = require(\"lodash\");","module.exports = require(\"mongoose\");"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/default-notify-props.ts","webpack:///./src/constants/index.ts","webpack:///./src/constants/query.constants.ts","webpack:///./src/constants/types.ts","webpack:///./src/containers/containers.ts","webpack:///./src/containers/context-services-from-container.ts","webpack:///./src/containers/index.ts","webpack:///./src/graphql/index.ts","webpack:///./src/graphql/resolvers/channel-member.ts","webpack:///./src/graphql/resolvers/channel.ts","webpack:///./src/graphql/resolvers/index.ts","webpack:///./src/graphql/resolvers/post-thread.ts","webpack:///./src/graphql/resolvers/post.ts","webpack:///./src/graphql/resolvers/primitive-resolvers.ts","webpack:///./src/graphql/resolvers/reaction.ts","webpack:///./src/graphql/schema/base.graphql","webpack:///./src/graphql/schema/channel-member.graphql","webpack:///./src/graphql/schema/channel.graphql","webpack:///./src/graphql/schema/index.ts","webpack:///./src/graphql/schema/post-thread.graphql","webpack:///./src/graphql/schema/post.graphql","webpack:///./src/graphql/schema/preferences.graphql","webpack:///./src/graphql/schema/reaction.graphql","webpack:///./src/graphql/schema/users.graphql","webpack:///./src/index.ts","webpack:///./src/module.ts","webpack:///./src/services/base-service.ts","webpack:///./src/services/channel-service.ts","webpack:///./src/services/index.ts","webpack:///./src/services/post-service.ts","webpack:///./src/services/post-thread-service.ts","webpack:///./src/services/reaction-service.ts","webpack:///./src/store/index.ts","webpack:///./src/store/models/channel.ts","webpack:///./src/store/models/common-options.ts","webpack:///./src/store/models/index.ts","webpack:///./src/store/models/post-thread.ts","webpack:///./src/store/models/post.ts","webpack:///./src/store/models/reaction.ts","webpack:///./src/store/repositories/base-repository.ts","webpack:///./src/store/repositories/channel-repository.ts","webpack:///./src/store/repositories/index.ts","webpack:///./src/store/repositories/post-repository.ts","webpack:///./src/store/repositories/post-thread-repository.ts","webpack:///./src/store/repositories/reaction-repository.ts","webpack:///external \"@adminide-stack/account-api-server\"","webpack:///external \"@adminide-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@messenger-box/core\"","webpack:///external \"graphql-iso-date\"","webpack:///external \"inversify\"","webpack:///external \"lodash\"","webpack:///external \"mongoose\""],"names":[],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","export const DEFAULT_NOTIFY_PROPS = {\n desktopNotifyProp: true,\n markUnreadNotifyProp: true,\n pushNotifyProp: true,\n emailNotifyProp: true,\n ignoreChannelMentionsNotifyProp: true,\n};\n","export * from './types';\nexport * from './query.constants';\nexport * from './default-notify-props';\n","export enum PAGINATION_OPTIONS {\n limit = 10,\n skip = 0,\n}\n\nexport const DEFAULT_SORTING = {\n id: 'asc',\n};\n","export const TYPES = {\n BaseRepository: Symbol('BaseRepository'),\n BaseService: Symbol('BaseService'),\n\n ChannelRepository: Symbol('ChannelRepository'),\n PostRepository: Symbol('PostRepository'),\n PostThreadRepository: Symbol('PostThreadRepository'),\n ReactionRepository: Symbol('ReactionRepository'),\n\n ChannelService: Symbol('ChannelService'),\n PostService: Symbol('PostService'),\n PostThreadService: Symbol('PostThreadService'),\n ReactionService: Symbol('ReactionService'),\n};\n","import { ContainerModule, interfaces } from 'inversify';\nimport { ChannelService, PostService, PostThreadService, ReactionService } from '../services';\nimport { TYPES } from '../constants';\nimport {\n IPostService,\n IPostRepository,\n IPostThreadService,\n IPostThreadRepository,\n IChannelRepository,\n IChannelService,\n IReactionService,\n IReactionRepository,\n} from '../interfaces';\nimport { ChannelRepository, PostRepository, PostThreadRepository, ReactionRepository } from '../store';\n\n/**\n * Local services and exposed micro services to serve remote connections.\n * Operates within in the Gateway.\n *\n * @param settings Settings\n */\nexport const localContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetNamed('proxy');\n });\n\n/**\n * Operates external to the Gateway. Usually a broker listen to calls and invoke this service\n * local to the micro container.\n *\n * @param settings Settings\n */\nexport const externalContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetIsDefault();\n });\n","import { interfaces } from 'inversify';\nimport { IChannelService, IPostService, IPostThreadService, IReactionService, IServices } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport const contextServicesFromContainer = (container: interfaces.Container): IServices => ({\n channelService: container.get<IChannelService>(TYPES.ChannelService),\n postService: container.get<IPostService>(TYPES.PostService),\n postThreadService: container.get<IPostThreadService>(TYPES.PostThreadService),\n reactionService: container.get<IReactionService>(TYPES.ReactionService),\n});\n","export * from './containers';\nexport * from './context-services-from-container';\n","export * from './schema';\nexport * from './resolvers';\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelMemberResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { IChannel, IResolvers, IRoomType } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelResolvers = (): IResolvers<IContext> => ({\n Query: {\n channelByName(src, { name }, { channelService, userContext }) {\n return channelService.getByName(userContext.teamId, name) as Promise<IChannel>;\n },\n channels(src, _, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.getChannels(teamId, accountId, false, new Date().getTime()) as Promise<IChannel[]>;\n },\n channelsByUser(src, _, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.getAll({\n criteria: {\n creator: accountId,\n },\n }) as Promise<IChannel[]>;\n },\n directChannel(src, { id }, { channelService, userContext }) {\n return channelService.get({\n criteria: {\n id,\n user: userContext.accountId,\n type: IRoomType.DIRECT,\n },\n }) as Promise<IChannel>;\n },\n },\n Mutation: {\n createChannel(src, { name, description }, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.saveChannel({\n type: IRoomType.CHANNEL,\n creator: accountId,\n title: name,\n topic: name,\n team: teamId,\n description,\n }) as Promise<IChannel>;\n },\n\n addMemberToChannel(src, { channelId, memberId }, { channelService, userContext }) {\n return channelService.addMemberToChannel(channelId, memberId) as Promise<IChannel>;\n },\n\n createDirectChannel(src, { receiver, displayName }, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.createDirectChannel({\n sender: accountId,\n receiver,\n displayName,\n }) as Promise<IChannel>;\n },\n hideChannel(src, { id }, { channelService }) {\n return channelService.hideChannel(id);\n },\n leaveChannel(src, { id }, { channelService }) {\n return channelService.leaveChannel(id);\n },\n deleteChannel(src, { id }, { channelService }) {\n return channelService.deleteChannel(id);\n },\n },\n});\n","import { primitiveResolvers } from './primitive-resolvers';\nimport { channelResolvers } from './channel';\nimport { channelMemberResolvers } from './channel-member';\nimport { postResolvers } from './post';\nimport { postThreadResolvers } from './post-thread';\nimport { reactionResolvers } from './reaction';\n\nexport const messengerResolvers = [\n primitiveResolvers,\n channelResolvers,\n channelMemberResolvers,\n postResolvers,\n postThreadResolvers,\n reactionResolvers,\n];\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const postThreadResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import {IResolvers, ISortEnum} from '@messenger-box/core';\nimport {IContext} from '../../interfaces';\n\nexport const postResolvers = (): IResolvers<IContext> => ({\n Post: {\n editedBy(src, args, {accountService}) {\n return accountService.findAccountById(src.editedBy.toString());\n },\n author(src, args, {accountService}) {\n const author = src.author?.toString();\n if (author) {\n return accountService.findAccountById(author);\n }\n return accountService.findAccountById(src.editedBy.toString());\n },\n channel(src, args, {channelService}) {\n return channelService.get(src.channel.toString());\n },\n },\n Query: {\n messages(src, {channelId, limit, skip}, {postService, userContext}) {\n return postService.getAllWithCount({\n criteria: {\n channel: channelId,\n },\n limit,\n skip,\n sort: {\n key: 'createdAt',\n value: ISortEnum.ASC,\n },\n });\n },\n },\n Mutation: {\n deleteMessage(src, {messageId}, {postService}) {\n const {channelId, messageId: id} = messageId;\n return postService.delete({\n channel: channelId,\n id,\n });\n },\n editMessage(src, {messageId, messageInput}, {postService, userContext}) {\n return postService.update(messageId.messageId, {\n message: messageInput.content,\n editedBy: userContext.accountId,\n channel: messageId.channelId,\n } as any);\n },\n sendMessage(src, { channelId, messageInput }, { postService, userContext }) {\n return postService.create({\n channel: channelId,\n message: messageInput.content,\n editedBy: userContext.accountId,\n author: userContext.accountId,\n } as any);\n },\n // pinMessage(src , { messageId , messageInput} , {postService , userContext}) {\n // return postService.update(messageId.messageId, {\n // isPinned : messageInput.isPinned,\n // pinnedBy : userContext.accountId,\n // channel : messageId.channelId\n // } as any)\n // }\n },\n});\n","import { GraphQLDate, GraphQLTime, GraphQLDateTime } from 'graphql-iso-date';\n\nexport const primitiveResolvers = () => ({\n Date: GraphQLDate,\n Time: GraphQLTime,\n DateTime: GraphQLDateTime,\n});\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const reactionResolvers = (): IResolvers<IContext> => ({\n Query: {\n getPostReactions(src, { message }, { reactionService, userContext }) {\n return reactionService.getAll({\n criteria: {\n post: message,\n user: userContext.accountId,\n },\n });\n },\n },\n Mutation: {\n addReactionToMessage(src, { reaction }, { reactionService, userContext }) {\n return reactionService.create({\n ...reaction,\n user: userContext.accountId,\n });\n },\n updateReactionToMessage(src, { reaction, id }, { reactionService }) {\n return reactionService.update(id, { reaction });\n },\n removeReactionFromMessage(src, { id }, { reactionService }) {\n return reactionService.delete(id);\n },\n },\n});\n","export default \"interface IBaseRepo {\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput Sort{\\n key: String!,\\n value: SortEnum!,\\n}\\n\\nenum SortEnum{\\n ASC,\\n DESC\\n}\";","export default \"type ChannelMember {\\n id: ID!\\n user: String!\\n roles: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n explicitRoles: String\\n schemeAdmin: Boolean\\n lastViewedAt: Int\\n updatedAt: DateTime,\\n CreatedAt: DateTime,\\n}\\n\\ninput ChannelMemberInput {\\n userId: String!\\n roles: String\\n notifyProps: AnyObject\\n schemeGuest: Boolean\\n schemeUser: Boolean\\n schemeAdmin: Boolean\\n explicitRoles: String\\n}\\n\";","export default \"type Channel implements IBaseRepo {\\n id: String!\\n title: String\\n topic: String\\n purpose: String\\n description: String\\n displayName: String\\n team: AccountTeam\\n lastPostAt: DateTime\\n totalMsgCount: Int\\n totalMsgCountRoot: Int\\n creator: UserAccount\\n members: [ChannelMember]\\n type: String\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ntype ChannelUnread {\\n teamId: String\\n channelId: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n}\\n\\n\\ninput ChannelFilterInput {\\n nameFilter: String\\n privacy: ChannelPrivacy\\n joinedChannels: Boolean\\n storyBy: ChannelSort\\n}\\n\\ninput ChannelNameAndDirect {\\n name: String!\\n direct: Boolean!\\n}\\n\\nenum ChannelSort {\\n NAME\\n NUMBER_OF_MESSAGES\\n}\\n\\nenum ChannelPrivacy {\\n PRIVATE\\n PUBLIC\\n ALL\\n}\\n\\nenum RoomType {\\n CHANNEL\\n DIRECT\\n GROUP\\n PRIVATE\\n VISITOR\\n}\\n\\nextend type Query {\\n channelByName(name: String!): Channel @addAccountContext @isAuthenticated\\n channels(filter: ChannelFilterInput = {\\n privacy: ALL,\\n joinedChannels: false,\\n sortyBy: NAME\\n }): [Channel] @addAccountContext @isAuthenticated\\n channelsByUser: [Channel] @addAccountContext @isAuthenticated\\n directChannel(id: ID!): Channel @addAccountContext @isAuthenticated\\n}\\n\\nextend type Mutation {\\n createChannel(\\n name: String!,\\n description:String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n addMemberToChannel(\\n channelId: String!,\\n memberId: String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n createDirectChannel(\\n receiver: [ID]!\\n displayName: String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n hideChannel(id: ID!): Boolean @isAuthenticated\\n\\n leaveChannel(id: ID!): Boolean @isAuthenticated\\n\\n deleteChannel(id: ID!): Boolean @isAuthenticated\\n}\\n\";","import baseSchema from './base.graphql';\nimport channelSchema from './channel.graphql';\nimport channelMember from './channel-member.graphql';\nimport postSchema from './post.graphql';\nimport postThread from './post-thread.graphql';\nimport preferencesSchema from './preferences.graphql';\nimport usersSchema from './users.graphql';\nimport reactionSchema from './reaction.graphql';\n\nconst schema = [\n baseSchema,\n channelSchema,\n channelMember,\n postSchema,\n postThread,\n preferencesSchema,\n usersSchema,\n reactionSchema,\n].join('\\n');\n\nexport { schema };\n","export default \"type PostThread{\\n post: Post,\\n channel: Channel,\\n replyCount: Int,\\n lastReplyAt: DateTime,\\n participants:[UserAccount]\\n}\\n\";","export default \"type Post implements IBaseRepo {\\n id: String\\n author: UserAccount\\n channel: Channel\\n\\n rootId: String\\n parentId: String\\n originalId: String\\n\\n \\\"\\\"\\\" Post sent by server e.g. User joined channel \\\"\\\"\\\"\\n fromServer: Boolean\\n\\n message: String\\n type: String\\n props: AnyObject\\n hashTags: String\\n\\n filenames: [String]\\n fields: [String]\\n reactions: [Reaction]\\n\\n editedBy: UserAccount\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput MessageInput {\\n content: String!\\n userRef: [String] #userId\\n channelRef: [String] #channelId\\n}\\n\\ninput MessageIdentifier {\\n channelId: String!\\n messageId: String!\\n}\\n\\ntype PostsWithCursor {\\n cursor: String\\n channel: Channel\\n posts: [Post]\\n}\\n\\ntype Messages{\\n totalCount: Int,\\n data:[Post]\\n}\\n\\n\\nextend type Query {\\n messages(\\n channelId: ID,\\n# channelName: String,\\n# directTo: ID,\\n limit: Int,\\n skip: Int,\\n# searchRegex: String,\\n# excludeServer: Boolean\\n ): Messages! @isAuthenticated @addAccountContext\\n}\\n\\nextend type Mutation {\\n deleteMessage(messageId: MessageIdentifier!): Boolean @isAuthenticated\\n\\n editMessage(messageId: MessageIdentifier!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n\\n sendMessage(channelId: String!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n}\\n\\nextend type Subscription {\\n chatMessageAdded(channelId: String, directTo: String): Post @isAuthenticated @addAccountContext\\n}\\n\";","export default \"\\n\\ntype ChannelSettings {\\n disableNotification: Boolean\\n audio: String\\n desktop: String\\n duration: Int\\n mobile: String\\n mail: String\\n hideUnreadRoomStatus : Boolean\\n unreadTrayIconAlret: String\\n}\\n\\nextend type Preference_Account {\\n language: String\\n notificationDuration: Float\\n unreadTrayIconAlert: Boolean\\n useEmojis: Boolean\\n convertAsciiToEmoji: Boolean\\n autoLoadImages: Boolean\\n saveMobileBandwith: Boolean\\n collapseEmbeddedMeida: Boolean\\n unreadRoomsMode: Boolean\\n hideUserName: Boolean\\n hideRoles: Boolean\\n hideRightSideBarWithClick: Boolean\\n hideAvatars: Boolean\\n mergePrivateGroupsWithChannels: Boolean\\n enterKeyBehaviour: String\\n viewMode: String\\n offlineEmailNotifications: String\\n highlights: String\\n newRoomNotificationSound: String\\n newMessageNotificationSound: String\\n email: String\\n avatar: String\\n name: String\\n}\\n\\nextend type Preferences {\\n channel: ChannelSettings\\n}\\n\";","export default \"type Reaction{\\n id:ID!\\n reaction:String!,\\n user: UserAccount!,\\n post: Post!\\n}\\n\\ninput ReactionInput{\\n reaction:String!,\\n post: String!\\n}\\n\\nextend type Query{\\n getPostReactions(message:ID!):[Reaction] @isAuthenticated\\n}\\nextend type Mutation{\\n addReactionToMessage(reaction:ReactionInput):Reaction @isAuthenticated @addAccountContext\\n updateReactionToMessage(id:ID!, reaction:String!):Reaction @isAuthenticated @addAccountContext\\n removeReactionFromMessage(id:ID!):Boolean @isAuthenticated @addAccountContext\\n}\\n\";","export default \"\\nenum MessengerUserStatus {\\n ONLINE\\n AWAY\\n BUSY\\n INVISIBLE\\n}\\n\\ntype MessengerUser implements IUser {\\n id: ID!\\n username: String\\n email: String\\n status: MessengerUserStatus\\n avatar: String\\n name: String\\n lastLogin: String\\n channels: [Channel]\\n directMessages: [Channel]\\n}\";","/* eslint-disable import/no-extraneous-dependencies */\nimport { Feature } from '@common-stack/server-core';\nimport MessengerModule from './module';\n\nexport * from './constants';\nexport default new Feature(MessengerModule);\n","import { Feature } from '@common-stack/server-core';\nimport { schema, messengerResolvers } from './graphql';\nimport { localContainerModule, externalContainerModule, contextServicesFromContainer } from './containers';\n\nexport default new Feature({\n schema,\n createResolversFunc: messengerResolvers,\n createServiceFunc: contextServicesFromContainer,\n createContainerFunc: [externalContainerModule],\n createHemeraContainerFunc: [localContainerModule],\n addBrokerMainServiceClass: [],\n});\n","import { Document, FilterQuery } from 'mongoose';\nimport { injectable } from 'inversify';\nimport { GetAllArgs, IBaseRepository, IBaseService } from '../interfaces';\n\n@injectable()\nexport class BaseService<T, C = T, U = T> implements IBaseService<T, C, U> {\n constructor(protected repository: IBaseRepository<T>) {\n this.repository = repository;\n }\n\n async getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{ data: T[]; totalCount: number }> {\n const totalCount = await this.count(options.criteria);\n const data = await this.getAll(options);\n return {\n totalCount,\n data,\n };\n }\n\n count(conditions?: FilterQuery<Document<T>>): Promise<number> {\n return this.repository.count(conditions);\n }\n\n get(conditions: string | FilterQuery<Document<T>>): Promise<T> {\n if (typeof conditions === 'string') {\n return this.repository.get({ id: conditions });\n }\n return this.repository.get(conditions);\n }\n\n getName(name: string): Promise<T> {\n return this.repository.get({ name });\n }\n\n getAll(options: GetAllArgs<Document<T>>): Promise<T[]> {\n return this.repository.getAll(options);\n }\n\n create(data: C): Promise<T> {\n return this.repository.create<C>(data);\n }\n\n bulkCreate(data: C[]): Promise<T[]> {\n return this.repository.bulkCreate<C>(data);\n }\n\n async update(id: string, data: U, overwrite = true): Promise<T> {\n return this.repository.update<U>({ id }, data, { overwrite });\n }\n\n insert(data: (C | U) & { id?: string }, overwrite = true): Promise<T> {\n const { id, ...rest } = data;\n if (id) {\n const existing = this.repository.get({ id });\n if (existing) {\n return this.update(id, rest as U, overwrite);\n }\n }\n return this.create(rest as C);\n }\n\n delete(id: string | FilterQuery<Document<T>>): Promise<boolean> {\n if (typeof id === 'string') {\n return this.repository.delete({ id });\n }\n return this.repository.delete(id);\n }\n}\n","import { inject } from 'inversify';\nimport { IChannel, IChannelUnread, IPost, IRoomType, ISortEnum } from '@messenger-box/core';\nimport { IAccountService, ITeamService, TYPES as ADMINIDE_TYPES } from '@adminide-stack/account-api-server';\nimport { IConfigurationService } from '@adminide-stack/platform-server';\nimport { ServerTypes } from '@adminide-stack/core';\nimport { Schema } from 'mongoose';\nimport { BaseService } from './base-service';\nimport { DEFAULT_NOTIFY_PROPS, TYPES } from '../constants';\nimport {\n IAddMemberParams,\n IChannelRepository,\n ICreateDirectChannelParams,\n INotificationProps,\n IPostService,\n ISaveChannelParams,\n ISaveDirectChannelParams,\n} from '../interfaces';\n\nexport class ChannelService extends BaseService<IChannel, Omit<IChannel, 'id'>> {\n constructor(\n @inject(TYPES.ChannelRepository)\n readonly repository: IChannelRepository,\n @inject(ADMINIDE_TYPES.IAccountService)\n private readonly accountService: IAccountService,\n @inject(ADMINIDE_TYPES.ITeamService)\n private readonly teamsService: ITeamService,\n @inject(TYPES.PostService)\n private readonly postService: IPostService,\n @inject(ServerTypes.IConfigurationService)\n private readonly configService: IConfigurationService,\n ) {\n super(repository);\n }\n\n private static getDmNameFromIds(senderId: string, receiverId: string) {\n return `${senderId}__${receiverId}`;\n }\n\n private static get defaultNotifyProps(): INotificationProps {\n // #Todo: To be moved to settings\n return DEFAULT_NOTIFY_PROPS;\n }\n\n private getMaxChannelsPerTeam(teamId: string): Promise<number> {\n // #Todo: Get Max Channel per team from Team settings\n return Promise.resolve(10);\n }\n\n private async getCurrentChannelCountPerTeam(team: string) {\n return this.repository.count({\n team,\n type: IRoomType.CHANNEL,\n });\n }\n\n async createDirectChannel(data: ICreateDirectChannelParams): Promise<IChannel | Error> {\n const { sender, receiver, displayName } = data;\n const chlMember = [\n {\n user: sender,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n ];\n receiver.forEach((re) => {\n chlMember.push({\n user: re,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n });\n });\n const channelPayload: ISaveDirectChannelParams = {\n title: sender.split('').reverse().join(''),\n type: IRoomType.DIRECT,\n creator: sender,\n members: chlMember,\n displayName,\n };\n return this.saveDirectChannel(channelPayload);\n }\n\n async saveDirectChannel(channel: ISaveDirectChannelParams): Promise<IChannel | Error> {\n const { type, deletedAt } = channel;\n if (deletedAt) {\n return new Error('Deleted Channel can not be saved');\n }\n if (type !== IRoomType.DIRECT) {\n return new Error('Only direct channels are allowed');\n }\n return this.repository.create(channel);\n }\n\n async addMemberToChannel(channelId, memberId): Promise<IChannel | Error> {\n // const { channelId, memberId } = data;\n // console.log('==============================', channelId);\n const resData = await this.repository\n .get({ id: channelId })\n .then(async (res) => {\n const mebs = res.members;\n mebs.push({\n id: '',\n user: memberId,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n });\n const objToUpdate = res;\n objToUpdate.members = mebs;\n const finalResult = await this.repository\n .update({ id: channelId }, objToUpdate, { overwrite: true })\n .then((response) => response)\n .catch((error) => error);\n return finalResult;\n })\n .catch((err) => err);\n return resData;\n }\n\n async saveChannel(data: ISaveChannelParams): Promise<IChannel | Error> {\n const { type, team, creator } = data;\n if (type !== IRoomType.CHANNEL) {\n return new Error('Invalid Channel Type');\n }\n const maxChannels = await this.getMaxChannelsPerTeam(team);\n const currentChannels = await this.getCurrentChannelCountPerTeam(team);\n const canAddNewChannel = currentChannels < maxChannels;\n if (!canAddNewChannel) {\n return Error(`Only max of ${maxChannels} allowed`);\n }\n const channelPayload = {\n ...data,\n members: [\n {\n user: creator,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n ],\n };\n return this.repository.create(channelPayload);\n }\n\n async getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error> {\n const channel: IChannel = await this.repository.get({\n id: channelId,\n members: { user: userId },\n });\n const { members, team, id } = channel;\n const member = members.find((i) => i.user === userId);\n const msgCount = channel.totalMsgCount - member.msgCount;\n const msgCountRoot = channel.totalMsgCountRoot - member.msgCountRoot;\n const { notifyProps, mentionCountRoot, mentionCount } = member;\n\n return {\n channelId: id,\n teamId: team.toString(),\n msgCount,\n msgCountRoot,\n mentionCount,\n notifyProps,\n mentionCountRoot,\n };\n }\n\n async getPinnedPosts(channelId: string): Promise<IPost[] | Error> {\n const posts = await this.postService.getAll({\n criteria: {\n channelId,\n isPinned: true,\n },\n sort: {\n key: 'CreatAt',\n value: ISortEnum.ASC,\n },\n });\n const replyCounts = await Promise.all(\n posts.map((post) => this.postService.count({ rootId: post.rootId || post.id })),\n );\n return posts.reduce((acc, curr, index) => [...acc, { ...curr, replyCount: replyCounts[index] }], []);\n }\n\n restore(channelId: string, time: Date): Promise<IChannel> {\n return this.repository.update(\n { id: channelId },\n {\n deletedAt: time,\n },\n );\n }\n\n getByName(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n });\n }\n\n getByNameIncludeDeleted(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n deletedAt: true,\n });\n }\n\n getByNames(team: string, titles: string[]): Promise<IChannel[] | Error> {\n return this.getAll({\n criteria: {\n team,\n title: { $in: titles },\n },\n });\n }\n\n getChannelCounts(team: string, user: string): Promise<any> {\n return this.count({\n team,\n members: { user },\n });\n }\n\n getChannels(\n team: string,\n user: string,\n includeDeleted: boolean,\n lastDeleteAt: number,\n ): Promise<IChannel[] | Error> {\n return this.repository.getAll({\n // criteria: {\n // team,\n // members: { user },\n // },\n });\n }\n\n deleteChannel(id: string): Promise<boolean | Error> {\n return this.repository.delete({ id });\n }\n}\n","export * from './channel-service';\nexport * from './post-service';\nexport * from './post-thread-service';\nexport * from './reaction-service';\n","import { inject } from 'inversify';\nimport { IPost } from '@messenger-box/core';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { PostRepository } from '../store';\n\nexport class PostService extends BaseService<IPost> {\n constructor(\n @inject(TYPES.PostRepository)\n repository: PostRepository,\n ) {\n super(repository);\n }\n}\n","import { IPostThread } from '@messenger-box/core';\nimport { injectable, inject } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IPostThreadRepository, IPostThreadService } from '../interfaces';\n\n@injectable()\nexport class PostThreadService extends BaseService<IPostThread> implements IPostThreadService {\n constructor(\n @inject(TYPES.PostThreadRepository)\n readonly repository: IPostThreadRepository,\n ) {\n super(repository);\n }\n}\n","import { IReaction, IReactionInput } from '@messenger-box/core';\nimport { inject, injectable } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IReactionRepository, IReactionService, IReactionServiceInput } from '../interfaces';\n\n@injectable()\nexport class ReactionService\n extends BaseService<IReaction, IReactionServiceInput, Partial<IReactionInput>>\n implements IReactionService\n{\n constructor(\n @inject(TYPES.ReactionRepository)\n readonly reactionRepository: IReactionRepository,\n ) {\n super(reactionRepository);\n }\n}\n","export * from './repositories';\n","import { Connection, Document, Model, Schema } from 'mongoose';\nimport { IChannel, IRoomType } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IChannelModel = Document<IChannel>;\n\nconst channelModelSchema = new Schema(\n {\n type: {\n type: Schema.Types.String,\n enum: [IRoomType.CHANNEL, IRoomType.DIRECT, IRoomType.GROUP, IRoomType.PRIVATE, IRoomType.VISITOR],\n required: true,\n },\n members: [\n new Schema(\n {\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n roles: { type: Schema.Types.String },\n msgCount: { type: Schema.Types.Number },\n mentionCount: { type: Schema.Types.Number },\n mentionCountRoot: { type: Schema.Types.Number },\n msgCountRoot: { type: Schema.Types.Number },\n notifyProps: { type: Schema.Types.Mixed },\n explicitRoles: { type: Schema.Types.String },\n schemeAdmin: { type: Schema.Types.String },\n lastViewedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n },\n commonModeSchemaOptions,\n ),\n ],\n deletedAt: { type: Schema.Types.Date },\n lastPostAt: { type: Schema.Types.Date },\n totalMsgCount: { type: Schema.Types.Number },\n totalMsgCountRoot: { type: Schema.Types.Number },\n team: { type: Schema.Types.ObjectId, ref: 'team' },\n title: { type: Schema.Types.String },\n displayName: { type: Schema.Types.String },\n description: { type: Schema.Types.String },\n purpose: { type: Schema.Types.String },\n creator: { type: Schema.Types.ObjectId, ref: 'accounts' },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(channelModelSchema);\n\nexport type ChannelModelType = Model<IChannelModel>;\nexport const ChannelModelFunc: (db: Connection) => ChannelModelType = (db) =>\n db.model<IChannelModel>('channel', channelModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { Schema } from 'mongoose';\n\nexport const commonModeSchemaOptions = {\n timestamps: true,\n toJSON: {\n virtuals: true,\n },\n toObject: {\n virtuals: true,\n getters: true,\n transform(doc, ret) {\n delete ret.__v;\n delete ret._id;\n },\n },\n};\n\nexport const addIdVirtualFields = (schema: Schema) => {\n schema.set('toJSON', {\n virtuals: true,\n });\n return schema;\n};\n","export * from './channel';\nexport * from './post';\nexport * from './post-thread';\nexport * from './reaction';\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPostThread } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IThreadsModel = Document<IPostThread>;\n\nconst postThreadModelSchema = new Schema(\n {\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n replyCount: { type: Schema.Types.Number },\n lastReplyAt: { type: Schema.Types.Date },\n participants: [{ type: Schema.Types.ObjectId, ref: 'accounts' }],\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postThreadModelSchema);\n\nexport type PostThreadModelType = Model<IThreadsModel>;\nexport const PostThreadModelFunc: (db: Connection) => PostThreadModelType = (db) =>\n db.model<IThreadsModel>('post-threads', postThreadModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPost } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IPostModel = Document<IPost>;\n\nconst postModelSchema = new Schema(\n {\n createdAt: { type: Schema.Types.Date },\n editedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n editedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\n // isPinned goes to settings\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n rootId: { type: Schema.Types.String },\n parentId: { type: Schema.Types.String },\n originalId: { type: Schema.Types.String },\n message: { type: Schema.Types.String },\n type: { type: Schema.Types.String },\n props: { type: Schema.Types.Mixed },\n hashtags: { type: Schema.Types.Mixed },\n filenames: { type: Schema.Types.Mixed },\n fields: { type: Schema.Types.String },\n hasReactions: { type: Schema.Types.Boolean },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postModelSchema);\n\nexport type PostModelType = Model<IPostModel>;\nexport const PostModelFunc: (db: Connection) => PostModelType = (db) => db.model<IPostModel>('posts', postModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IReaction } from '@messenger-box/core';\nimport { addIdVirtualFields } from './common-options';\n\nexport type IReactionModel = Document<IReaction>;\n\nconst reactionModelSchema = new Schema({\n createdAt: { type: Schema.Types.Date },\n reaction: { type: Schema.Types.String },\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n});\n\naddIdVirtualFields(reactionModelSchema);\n\nexport type ReactionModelType = Model<IReactionModel>;\nexport const ReactionModelFunc: (db: Connection) => ReactionModelType = (db) =>\n db.model<IReactionModel>('reactions', reactionModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { mergeWith, isObject } from 'lodash';\nimport { logger as Logger } from '@cdm-logger/server';\n// eslint-disable-next-line import/no-unresolved\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { Connection, Document, FilterQuery, Model } from 'mongoose';\nimport { injectable, unmanaged } from 'inversify';\nimport { GetAllArgs, IBaseRepository } from '../../interfaces';\nimport { DEFAULT_SORTING, PAGINATION_OPTIONS } from '../../constants';\n\n@injectable()\nexport class BaseRepository<T, D = Document<T>> implements IBaseRepository<T, D> {\n private options: IMongoOptions;\n\n private logger: typeof Logger;\n\n private model: Model<D>;\n\n constructor(\n @unmanaged()\n modelFunc: (db: Connection) => Model<D>,\n @unmanaged()\n db: Connection,\n @unmanaged()\n logger: typeof Logger,\n @unmanaged()\n options?: IMongoOptions,\n ) {\n this.model = modelFunc(db);\n this.options = options;\n this.logger = logger.child({ className: BaseRepository.name });\n }\n\n public async getAll(options: GetAllArgs<D>): Promise<T[]> {\n try {\n const { criteria, selectedFields, sort, limit, skip } = options;\n // map id to mongoose _id\n const { id, ...rest } = criteria || { id: undefined };\n const response = await this.model\n .find({ ...rest, ...(id ? { _id: id } : {}) }, selectedFields)\n .limit(limit || PAGINATION_OPTIONS.limit)\n .skip(skip || PAGINATION_OPTIONS.skip)\n .sort(isObject(sort) ? { [sort?.key]: sort.value } : DEFAULT_SORTING)\n .exec();\n return response.map((i) => i?.toObject()) as T[];\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(options)}`);\n throw e;\n }\n }\n\n public async count(conditions?: FilterQuery<D>): Promise<number> {\n return this.model.count(conditions).exec();\n }\n\n public async get(conditions?: FilterQuery<D>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async find(conditions: Partial<FilterQuery<D>>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async create<I>(data: I): Promise<T> {\n try {\n const response = await this.model.create(data);\n return response.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to create Model with data ${JSON.stringify(data)} due to ${e?.message}`);\n throw e;\n }\n }\n\n public async bulkCreate<I>(data: I[]): Promise<T[]> {\n try {\n const response = await this.model.insertMany(data, {\n lean: true,\n ordered: true,\n });\n return response as unknown as T[];\n } catch (e) {\n this.logger.error(`Unable to bulk create due to error`, e.message);\n }\n }\n\n public async upsert<I>(conditions: FilterQuery<D>, update: I, options?: Record<string, unknown>): Promise<T> {\n return this.update<I>(conditions, update, {\n upsert: true,\n ...options,\n });\n }\n\n public async update<I>(criteria: FilterQuery<D>, update: I, options: Record<string, unknown>): Promise<T> {\n try {\n const { overWrite, ...remaining } = options;\n let old = {};\n if (!overWrite) {\n old = await this.get(criteria);\n if (!old) {\n throw Error(\n `(update) No existing record found for update with criteria ${JSON.stringify(criteria)}`,\n );\n }\n }\n return this.model.findOneAndUpdate(\n this.mapConditions(criteria),\n mergeWith(old, update, (obj, src) => {\n if (Array.isArray(src) && Array.isArray(obj)) {\n return src;\n }\n }),\n { new: true, useFindAndModify: false, ...remaining },\n ) as unknown as Promise<T>;\n } catch (e) {\n this.logger.error(`Unable to Update with criteria ${criteria} and data ${update}`);\n throw e;\n }\n }\n\n public async delete(criteria: FilterQuery<D>): Promise<boolean> {\n try {\n const deleted = await this.model.findOneAndDelete(this.mapConditions(criteria));\n return !!deleted;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria ${criteria}`);\n throw e;\n }\n }\n\n public async bulkDelete(criteria: FilterQuery<D>): Promise<number> {\n try {\n const deleted = await this.model.deleteMany(this.mapConditions(criteria));\n return deleted?.deletedCount || 0;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria ${criteria}`);\n throw e;\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n private mapConditions(conditions: FilterQuery<D>): FilterQuery<D> {\n const { id: _id, ...remaining } = conditions;\n return {\n ...(_id ? { _id } : {}),\n ...remaining,\n };\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\n// @ts-ignore\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IChannel } from '@messenger-box/core';\nimport { ChannelModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class ChannelRepository extends BaseRepository<IChannel> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(ChannelModelFunc, db, logger, options);\n }\n}\n","export * from './channel-repository';\nexport * from './post-repository';\nexport * from './post-thread-repository';\nexport * from './reaction-repository';\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IPost } from '@messenger-box/core';\nimport { PostModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class PostRepository extends BaseRepository<IPost> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(PostModelFunc, db, logger, options);\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IPostThread } from '@messenger-box/core';\nimport { PostThreadModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class PostThreadRepository extends BaseRepository<IPostThread> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(PostThreadModelFunc, db, logger, options);\n }\n}\n","import { IReaction } from '@messenger-box/core';\nimport { inject, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { ReactionModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\nimport { IReactionRepository } from '../../interfaces';\n\nexport class ReactionRepository extends BaseRepository<IReaction> implements IReactionRepository {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(ReactionModelFunc, db, logger, options);\n }\n}\n","module.exports = require(\"@adminide-stack/account-api-server\");","module.exports = require(\"@adminide-stack/core\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"@messenger-box/core\");","module.exports = require(\"graphql-iso-date\");","module.exports = require(\"inversify\");","module.exports = require(\"lodash\");","module.exports = require(\"mongoose\");"],"sourceRoot":""}
@@ -10,3 +10,7 @@ export interface ISaveChannelParams extends Omit<IChannel, 'creator' | 'id' | 't
10
10
  creator: string;
11
11
  team: string;
12
12
  }
13
+ export interface IAddMemberParams extends Omit<IChannel, 'channelId' | 'memberId'> {
14
+ memberId: string;
15
+ channelId: string;
16
+ }
@@ -17,6 +17,7 @@ export interface IChannelService extends IBaseService<IChannel, Omit<IChannel, '
17
17
  sender: string;
18
18
  displayName: string;
19
19
  }): Promise<IChannel | Error>;
20
+ addMemberToChannel(channelId: string, memberId: string): Promise<IChannel | Error>;
20
21
  saveDirectChannel(channel: ISaveDirectChannelParams): Promise<IChannel | Error>;
21
22
  saveChannel(data: ISaveChannelParams): Promise<IChannel | Error>;
22
23
  getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error>;
@@ -50,4 +51,5 @@ export interface IChannelService extends IBaseService<IChannel, Omit<IChannel, '
50
51
  saveMultipleMembers(members: IUserAccount[]): Promise<IUserAccount[] | Error>;
51
52
  hideChannel(id: string): Promise<boolean>;
52
53
  leaveChannel(id: string): Promise<boolean>;
54
+ deleteChannel(id: string): Promise<boolean>;
53
55
  }
@@ -16,6 +16,7 @@ export declare class ChannelService extends BaseService<IChannel, Omit<IChannel,
16
16
  private getCurrentChannelCountPerTeam;
17
17
  createDirectChannel(data: ICreateDirectChannelParams): Promise<IChannel | Error>;
18
18
  saveDirectChannel(channel: ISaveDirectChannelParams): Promise<IChannel | Error>;
19
+ addMemberToChannel(channelId: any, memberId: any): Promise<IChannel | Error>;
19
20
  saveChannel(data: ISaveChannelParams): Promise<IChannel | Error>;
20
21
  getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error>;
21
22
  getPinnedPosts(channelId: string): Promise<IPost[] | Error>;
@@ -25,4 +26,5 @@ export declare class ChannelService extends BaseService<IChannel, Omit<IChannel,
25
26
  getByNames(team: string, titles: string[]): Promise<IChannel[] | Error>;
26
27
  getChannelCounts(team: string, user: string): Promise<any>;
27
28
  getChannels(team: string, user: string, includeDeleted: boolean, lastDeleteAt: number): Promise<IChannel[] | Error>;
29
+ deleteChannel(id: string): Promise<boolean | Error>;
28
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messenger-box/platform-server",
3
- "version": "0.0.1-alpha.74",
3
+ "version": "0.0.1-alpha.86",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -38,7 +38,7 @@
38
38
  }
39
39
  },
40
40
  "dependencies": {
41
- "@messenger-box/core": "0.0.1-alpha.74",
41
+ "@messenger-box/core": "0.0.1-alpha.86",
42
42
  "aws-sdk": "^2.978.0"
43
43
  },
44
44
  "peerDependencies": {
@@ -58,5 +58,5 @@
58
58
  "typescript": {
59
59
  "definition": "lib/index.d.ts"
60
60
  },
61
- "gitHead": "efc157f01d9ea1ba696b99c6c9af675f48fd655f"
61
+ "gitHead": "7931277a88ce8a32c1765af349f7640805e96a6f"
62
62
  }