@messenger-box/platform-server 0.0.1-alpha.183 → 0.0.1-alpha.185

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
@@ -1452,13 +1452,13 @@ const BaseServiceMixin = (service) => ({
1452
1452
  params: {
1453
1453
  id: 'string',
1454
1454
  },
1455
- handler: async (ctx) => service.get(ctx.params.conditions),
1455
+ handler: async (ctx) => service.get(ctx.params.id),
1456
1456
  },
1457
1457
  [core_1.IBaseServiceCommands.count]: {
1458
1458
  params: {
1459
- condition: { type: 'object', optional: true },
1459
+ criteria: { type: 'object', optional: true },
1460
1460
  },
1461
- handler: async (ctx) => service.count(ctx.params.conditions),
1461
+ handler: async (ctx) => service.count(ctx.params.criteria),
1462
1462
  },
1463
1463
  [core_1.IBaseServiceCommands.bulkCreate]: {
1464
1464
  params: {
@@ -1480,9 +1480,13 @@ const BaseServiceMixin = (service) => ({
1480
1480
  },
1481
1481
  [core_1.IBaseServiceCommands.getAll]: {
1482
1482
  params: {
1483
- options: 'object',
1483
+ criteria: 'object|optional',
1484
+ sort: 'object|optional',
1485
+ skip: 'number|optional',
1486
+ limit: 'number|optional',
1487
+ selectedFields: 'string|optional',
1484
1488
  },
1485
- handler: async (ctx) => service.getAll(ctx.params.options),
1489
+ handler: async (ctx) => service.getAll(ctx.params),
1486
1490
  },
1487
1491
  [core_1.IBaseServiceCommands.getAllWithCount]: {
1488
1492
  params: {
@@ -2924,8 +2928,8 @@ let BaseProxyService = class BaseProxyService {
2924
2928
  bulkCreate(data) {
2925
2929
  return this.callAction(core_2.IBaseServiceCommands.bulkCreate, { data });
2926
2930
  }
2927
- count(conditions) {
2928
- return this.callAction(core_2.IBaseServiceCommands.count, { conditions });
2931
+ count(criteria) {
2932
+ return this.callAction(core_2.IBaseServiceCommands.count, { criteria });
2929
2933
  }
2930
2934
  create(data) {
2931
2935
  return this.callAction(core_2.IBaseServiceCommands.create, { data });
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/config/config.ts","webpack:///./src/config/index.ts","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/enums/index.ts","webpack:///./src/enums/notification-duration-unit-enum.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/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/extended.graphql","webpack:///./src/graphql/schema/index.ts","webpack:///./src/graphql/schema/mail-templates.graphql","webpack:///./src/graphql/schema/messenger-notification-service.graphql","webpack:///./src/graphql/schema/messenger-preferences.graphql","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/interfaces/index.ts","webpack:///./src/migrations/index.ts","webpack:///./src/migrations/message-notification-template-migration.ts","webpack:///./src/mixins/base-service-mixin.ts","webpack:///./src/mixins/index.ts","webpack:///./src/module.ts","webpack:///./src/plugins/channel-moleculer-service.ts","webpack:///./src/plugins/index.ts","webpack:///./src/plugins/messenger-notification-moleculer-service.ts","webpack:///./src/plugins/post-moleculer-service.ts","webpack:///./src/plugins/post-thread-moleculer-service.ts","webpack:///./src/plugins/reaction-moleculer-service.ts","webpack:///./src/preferences/index.ts","webpack:///./src/preferences/settings/index.ts","webpack:///./src/preferences/settings/post-settings.ts","webpack:///./src/services/base-service.ts","webpack:///./src/services/channel-service.ts","webpack:///./src/services/index.ts","webpack:///./src/services/messenger-notification-service.ts","webpack:///./src/services/post-service.ts","webpack:///./src/services/post-thread-service.ts","webpack:///./src/services/proxy-services/base-proxy-service.ts","webpack:///./src/services/proxy-services/channel-microservice.ts","webpack:///./src/services/proxy-services/index.ts","webpack:///./src/services/proxy-services/messenger-notification-microservice.ts","webpack:///./src/services/proxy-services/post-microservice.ts","webpack:///./src/services/proxy-services/post-thread-microservice.ts","webpack:///./src/services/proxy-services/reaction-microservice.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/core\"","webpack:///external \"@adminide-stack/platform-server\"","webpack:///external \"@common-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@container-stack/file-info-core\"","webpack:///external \"@messenger-box/core\"","webpack:///external \"@messenger-box/notification-api-core\"","webpack:///external \"@skoropletov/moleculer-cron-tasks\"","webpack:///external \"@vscode-alt/monaco-editor/esm/vs/nls\"","webpack:///external \"date-fns/compareAsc\"","webpack:///external \"date-fns/sub\"","webpack:///external \"envalid\"","webpack:///external \"graphql\"","webpack:///external \"inversify\"","webpack:///external \"lodash\"","webpack:///external \"moleculer\"","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","import { cleanEnv, str, num } from 'envalid';\n\nexport const config = cleanEnv(process.env, {\n FILES_TTL: num({ default: 3600, desc: 'TTL for files cache in Seconds' }),\n GRAPHQL_URL: str(),\n MAIL_SEND_DEFAULT_EMAIL: str(),\n APP_NAME: str(),\n});\n","export * from './config';\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 MessengerNotificationService: Symbol('MessengerNotificationService'),\n};\n","import { ContainerModule, interfaces } from 'inversify';\nimport { TaggedType } from '@common-stack/core';\nimport {\n ChannelService,\n PostService,\n PostThreadService,\n ReactionService,\n MessengerNotificationService,\n} from '../services';\nimport { TYPES } from '../constants';\nimport {\n IChannelRepository,\n IChannelService,\n IPostRepository,\n IPostService,\n IPostThreadRepository,\n IPostThreadService,\n IReactionRepository,\n IReactionService,\n IMessengerNotificationService,\n} from '../interfaces';\nimport { ChannelRepository, PostRepository, PostThreadRepository, ReactionRepository } from '../store';\nimport { MessageNotificationTemplateMigration } from '../migrations';\nimport {\n ChannelProxyService,\n PostProxyService,\n PostThreadMicroservice,\n ReactionMicroservice,\n MessengerNotificationMicroservice,\n} from '../services/proxy-services';\n\n/**\n * Local services and exposed microservices to serve remote connections.\n * Operates within in the Gateway.\n *\n * @param settings Settings\n */\nexport const proxyServiceContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind('MongodbMigration')\n .to(MessageNotificationTemplateMigration)\n .whenTargetNamed(MessageNotificationTemplateMigration.name);\n\n bind<IChannelService>(TYPES.ChannelService)\n .to(ChannelProxyService)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\n\n bind<IPostService>(TYPES.PostService)\n .to(PostProxyService)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadMicroservice)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\n\n bind<IReactionService>(TYPES.ReactionService)\n .to(ReactionMicroservice)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\n\n bind<IMessengerNotificationService>(TYPES.MessengerNotificationService)\n .to(MessengerNotificationMicroservice)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\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 serviceContainerModule: (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 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 bind<IMessengerNotificationService>(TYPES.MessengerNotificationService)\n .to(MessengerNotificationService)\n .inSingletonScope()\n .whenTargetIsDefault();\n });\n","import { interfaces } from 'inversify';\nimport { TaggedType } from '@common-stack/core';\nimport { PubSub } from 'graphql-subscriptions';\nimport {\n IChannelService,\n IMessengerNotificationService,\n IPostService,\n IPostThreadService,\n IReactionService,\n IServices,\n} from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport const contextServicesFromContainer = (container: interfaces.Container): IServices => {\n const services = ({\n pubsub: container.get<PubSub>('PubSub'),\n channelService: container.getNamed<IChannelService>(TYPES.ChannelService, TaggedType.MICROSERVICE),\n postService: container.getNamed<IPostService>(TYPES.PostService, TaggedType.MICROSERVICE),\n postThreadService: container.getNamed<IPostThreadService>(TYPES.PostThreadService, TaggedType.MICROSERVICE),\n reactionService: container.getNamed<IReactionService>(TYPES.ReactionService, TaggedType.MICROSERVICE),\n messengerNotificationService: container.getNamed<IMessengerNotificationService>(\n TYPES.MessengerNotificationService,\n TaggedType.MICROSERVICE,\n ),\n })\n\n console.log({ services });\n\n return services as any;\n};\n","export * from './containers';\nexport * from './context-services-from-container';\n","export { NotificationDurationUnitEnum } from './notification-duration-unit-enum';\n","export enum NotificationDurationUnitEnum {\n days = 'days',\n hours = 'hours',\n minutes = 'minutes',\n}\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 { NotificationDurationUnitEnum } from '../../enums';\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 console.log({ accountId, teamId });\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) as Promise<boolean>;\n },\n viewChannel(src, { id }, { userContext, channelService }) {\n return channelService.viewChannel(id, userContext.accountId);\n },\n async sendNotificationOfUnreadMessages(src, { unit, value }, { messengerNotificationService }) {\n await messengerNotificationService.sendNotificationOfUnreadMessages(\n unit as unknown as NotificationDurationUnitEnum,\n value,\n );\n return true;\n },\n },\n});\n","import { 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 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 { generateUri, IClientCacheTypeNames, IConfigurationModel } from '@adminide-stack/core';\nimport { IFileInfo, IFilesInfo, IResolvers, ISortEnum } from '@messenger-box/core';\nimport { get } from 'lodash';\nimport { GraphQLError } from 'graphql';\nimport { GetAllArgs, IContext } from '../../interfaces';\n\nexport const postResolvers = (): IResolvers<IContext> => ({\n // Temporary fix, until we have extension support in base module\n FileInfo: {\n extension(src) {\n return src.mimeType.split('/')[1];\n },\n },\n Post: {\n editedBy(src, args, { accountService }) {\n return accountService.findAccountById(src.editedBy.toString());\n },\n deletedBy(src, args, { accountService }) {\n return accountService.findAccountById(src?.deletedBy.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 props(src, _, { userContext }) {\n return src?.props?.[`[${userContext.accountId}]`];\n },\n isRead(src, _, { userContext }) {\n return get(src?.props?.[`[${userContext.accountId}]`], `messenger.posts.isRead`);\n },\n isDelivered(src, _, { userContext }) {\n return get(src?.props?.[`[${userContext.accountId}]`], `messenger.posts.isDelivered`);\n },\n propsConfiguration(src, args, { configurationService }) {\n const resource = generateUri('messenger' as any, { _id: src.id }, 'props');\n let data = '{}';\n try {\n data = JSON.stringify(src.props);\n } catch (err) {\n console.log('---Errr---', err);\n }\n const machineModel = configurationService.parser(resource.toString(), data) as IConfigurationModel;\n return {\n resource,\n contents: machineModel.contents,\n overrides: machineModel.overrides,\n keys: machineModel.keys,\n __typename: IClientCacheTypeNames.MachineConfiguration,\n };\n },\n files(src, args: GetAllArgs<IFileInfo>, { fileInfoService }) {\n return fileInfoService.getAllWithCount({\n ...args,\n criteria: {\n ...args.criteria,\n refType: 'Post',\n ref: src.id,\n } as unknown,\n }) as unknown as IFilesInfo;\n },\n },\n Query: {\n async messages(src, { channelId, limit, skip }, { postService, userContext }) {\n const { data, totalCount } = await postService.getAllWithCount({\n criteria: {\n channel: channelId,\n },\n limit,\n skip,\n sort: {\n key: 'createdAt',\n value: ISortEnum.DESC,\n },\n });\n\n return {\n totalCount,\n data,\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 files: messageInput.files,\n } as any);\n },\n async sendMessage(src, { channelId, messageInput }, { postService, userContext, pubsub }) {\n const { content, files } = messageInput;\n const { accountId } = userContext;\n\n const post = await postService.create({\n channel: channelId as any,\n message: content,\n editedBy: accountId as any,\n author: accountId as any,\n files,\n });\n\n pubsub.publish(`POST_CREATED.${channelId}`, post);\n\n return post;\n },\n createMessageFileUploadLink(_, { postId, filename }, { postService, userContext }) {\n return postService.createFileUploadLink(postId, filename, userContext.accountId);\n },\n attachUploadedFileToMessage(_, { postId, file }, { postService, userContext }) {\n return postService.attachUploadedFile(postId, file, userContext.accountId);\n },\n async createMessageFilesUploadLink(_, { postId, filenames }, { postService, userContext }) {\n return postService.createFilesUploadLink(postId, filenames, userContext.accountId);\n },\n async attachUploadedFilesToMessage(_, { postId, files }, { postService, userContext }) {\n return postService.attachUploadedFiles(postId, files, userContext.accountId);\n },\n deleteMessageFile(_, { url }, { postService }) {\n return postService.deleteFile(url);\n },\n async readMessage(src, { messageId }, { postService, userContext, channelService }) {\n const member = await channelService.isMember(messageId.channelId, userContext.accountId);\n if (!member) {\n throw new GraphQLError('Message does not belong to user');\n }\n return postService.readMessage(messageId, userContext.accountId);\n },\n async deliverMessage(src, { messageId }, { postService, userContext, channelService }) {\n const member = await channelService.isMember(messageId.channelId, userContext.accountId);\n if (!member) {\n throw new GraphQLError('Message does not belong to user');\n }\n return postService.deliverMessage(messageId, userContext.accountId);\n },\n // uploadFile(src, { files, postId }, { fileInfoService, userContext }) {\n // const res = [];\n // files.map((file) =>\n // res.push(\n // fileInfoService.create({\n // refType: IFileRefType.Post as never,\n // file,\n // createdBy: userContext.accountId,\n // ref: postId,\n // }),\n // ),\n // );\n // return res;\n // },\n },\n Subscription: {\n chatMessageAdded: {\n // More on pubsub below\n subscribe: (_, { channelId, directTo }, { pubsub }) => pubsub.asyncIterator([`POST_CREATED.${channelId}`]),\n },\n },\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\\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 viewChannel(id:ID!): Boolean! @isAuthenticated @addAccountContext\\n\\n deleteChannel(id: ID!): Boolean @isAuthenticated\\n}\\n\";","export default \"interface IFileRef{\\n id:ID!\\n}\\n\\nextend enum FileRefType{\\n Post\\n}\\n\\nextend enum MoleculerServiceName {\\n MessengerNotificationService\\n}\\n\\n\\nextend enum MoleculerCronServiceName {\\n MessengerCronJob\\n}\\n\";","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport extended from './extended.graphql';\nimport 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';\nimport mailTemplate from './mail-templates.graphql';\nimport messengerPreferences from './messenger-preferences.graphql';\nimport messengerNotificationService from './messenger-notification-service.graphql';\n\nconst schema = [\n extended,\n baseSchema,\n channelSchema,\n channelMember,\n postSchema,\n postThread,\n preferencesSchema,\n usersSchema,\n reactionSchema,\n mailTemplate,\n messengerPreferences,\n messengerNotificationService,\n].join('\\n');\n\nexport { schema };\n","export default \"extend enum MailTemplateId {\\n MessageNotificationServiceId\\n}\\n\";","export default \"enum MessengerNotificationServiceCommands{\\n sendNotificationOfUnreadMessages\\n}\\n\\nextend type Mutation {\\n sendNotificationOfUnreadMessages(unit: String!, value: Int!): Boolean!\\n}\\n\";","export default \"type Preference_Notifications_Settings {\\n email: Boolean\\n sms: Boolean\\n browser: Boolean\\n}\\n\\ntype Preference_Account_Global_Notification{\\n offlineMessages: Preference_Notifications_Settings\\n}\\n\\ntype Preference_Account_Global{\\n notification: Preference_Account_Global_Notification\\n}\\nextend type Preference_Account {\\n global: Preference_Account_Global\\n}\\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 & IFileRef {\\n id: ID!\\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 files(criteria:AnyObject, limit:Int, skip:Int, sort:Sort):FilesInfo!\\n editedBy: UserAccount\\n deletedBy: UserAccount\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n\\n propsConfiguration: MachineConfiguration\\n\\n isRead: Boolean\\n isDelivered: Boolean\\n}\\n\\ninput MessageInput {\\n content: String!\\n userRef: [String] #userId\\n channelRef: [String] #channelId\\n files: [ID!]\\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 @addAccountContext\\n editMessage(messageId: MessageIdentifier!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n sendMessage(channelId: String!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n \\\"\\\"\\\"\\n Attach Post File\\n \\\"\\\"\\\"\\n createMessageFileUploadLink(postId:ID!, filename:String!): String! @isAuthenticated @addAccountContext\\n attachUploadedFileToMessage(postId:ID!, file: UploadedFileInput!): FileInfo! @isAuthenticated @addAccountContext\\n\\n createMessageFilesUploadLink(postId:ID!, filenames:[String!]!): [String!]! @isAuthenticated @addAccountContext\\n attachUploadedFilesToMessage(postId:ID!, files: [UploadedFileInput!]!): [FileInfo!]! @isAuthenticated @addAccountContext\\n \\\"\\\"\\\"\\n Detach Post File\\n \\\"\\\"\\\"\\n deleteMessageFile(url: String!): Boolean! @isAuthenticated @addAccountContext\\n\\n readMessage(messageId: MessageIdentifier!): Boolean! @isAuthenticated @addAccountContext\\n\\n deliverMessage(messageId: MessageIdentifier!): Boolean! @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 \"enum 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}\\n\\nextend type Query{\\n usersToChat(auth0Id:String!):[UserAccount] @isAuthenticated @addAccountContext\\n currentUser(auth0Id:String!):UserAccount @isAuthenticated @addAccountContext\\n}\\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);\nexport { PostTypes } from './preferences';\nexport * from './interfaces';\n","export * from './base-repositories';\nexport * from './get-all-args';\nexport * from './base-service';\nexport * from './channel-model';\nexport * from './channel-member';\nexport * from './notifications';\nexport * from './channel-repository';\nexport * from './channel-service';\nexport * from './post-service';\nexport * from './post-repository';\nexport * from './post-thread-service';\nexport * from './post-thread-repository';\nexport * from './reaction-repository';\nexport * from './reaction-service';\nexport * from './services';\nexport * from './context';\nexport * from './messenger-notification-service-interface';\n","export { MessageNotificationTemplateMigration } from './message-notification-template-migration';\n","import * as Logger from 'bunyan';\nimport { Connection } from 'mongoose';\nimport { IMailServiceAction, IMoleculerServiceName } from '@container-stack/mailing-api';\nimport { IDatabaseMigration, IIResourceUtilizationSettings } from '@adminide-stack/core';\nimport { IMailTemplateId } from '@messenger-box/core';\nimport { injectable, inject, tagged } from 'inversify';\nimport { CommonType, TaggedType } from '@common-stack/core';\nimport { CallingOptions, ServiceBroker } from 'moleculer';\nimport { config } from '../config';\n\n@injectable()\nexport class MessageNotificationTemplateMigration implements IDatabaseMigration {\n constructor(\n @inject('Logger') private logger: Logger,\n @inject('MongoDBConnection') private db: Connection,\n @inject(CommonType.MOLECULER_BROKER)\n protected broker: ServiceBroker,\n @inject('Settings')\n @tagged(TaggedType.MICROSERVICE, true)\n private settings: IIResourceUtilizationSettings,\n ) {\n this.logger = logger.child({ className: MessageNotificationTemplateMigration.name });\n }\n\n get id(): string {\n return 'MessageNotificationTemplate_01022022';\n }\n\n public async up(): Promise<void> {\n await this.down();\n const name = IMailTemplateId.MessageNotificationServiceId;\n const requestData = {\n engine: 'ejs',\n code: name,\n templateId: name,\n description: 'Payment',\n html: '<%= text %>',\n text: '<%= text %>',\n name,\n topic: '<%= subject %>',\n };\n\n return this.callAction(\n IMailServiceAction.saveTemplate,\n { request: requestData },\n IMoleculerServiceName.MailService,\n );\n }\n\n public async down(): Promise<void> {\n if (config.isDev) {\n await this.broker.waitForServices('MailService');\n }\n try {\n const name = IMailTemplateId.MessageNotificationServiceId;\n this.logger.trace(`Trying to down ${name}`);\n const droppedResponse = await this.callAction(\n IMailServiceAction.dropTemplate,\n { name },\n IMoleculerServiceName.MailService,\n );\n if (droppedResponse) {\n this.logger.info(`${name} dropped!`);\n } else {\n this.logger.trace(`${name} doesn't exist. Skipping down`);\n }\n } catch (e) {\n this.logger.error(e.message, e.stack);\n }\n }\n\n private async callAction<T, P = unknown>(command: string, params?: P, topic?: string, opts?: CallingOptions) {\n return this.broker.call<T, P>(`${topic}.${command}@${this.settings.adminApiNamespace}`, params, opts);\n }\n}\n","import { IBaseServiceCommands as BaseServiceCommands } from '@messenger-box/core';\nimport { Context, ServiceSchema } from 'moleculer';\nimport { Document, FilterQuery } from 'mongoose';\nimport { GetAllArgs, IBaseService } from '../interfaces';\n\nexport const BaseServiceMixin = <T, C, U>(service: IBaseService<T, C, U>): Partial<ServiceSchema> => ({\n name: 'BaseServiceMixin',\n actions: {\n [BaseServiceCommands.get]: {\n params: {\n id: 'string',\n },\n handler: async (ctx: Context<{ conditions: string | FilterQuery<Document<T>> }>) =>\n service.get(ctx.params.conditions as never),\n },\n [BaseServiceCommands.count]: {\n params: {\n condition: { type: 'object', optional: true },\n },\n handler: async (ctx: Context<{ conditions?: FilterQuery<Document<T>> }>) =>\n service.count(ctx.params.conditions),\n },\n [BaseServiceCommands.bulkCreate]: {\n params: {\n data: { type: 'array', items: 'object' },\n },\n handler: async (ctx: Context<{ data: never[] }>) => service.bulkCreate(ctx.params.data),\n },\n [BaseServiceCommands.create]: {\n params: {\n data: 'object',\n },\n handler: async (ctx: Context<{ data: never }>) => service.create(ctx.params.data),\n },\n [BaseServiceCommands.delete]: {\n params: {\n id: 'string',\n },\n handler: async (ctx: Context<{ id: string | FilterQuery<Document<T>> }>) =>\n service.delete(ctx.params.id as never),\n },\n [BaseServiceCommands.getAll]: {\n params: {\n options: 'object',\n },\n handler: async (ctx: Context<{ options: GetAllArgs<Document<T>> }>) => service.getAll(ctx.params.options),\n },\n [BaseServiceCommands.getAllWithCount]: {\n params: {\n options: 'object',\n },\n handler: async (ctx: Context<{ options: GetAllArgs<Document<T>> }>) =>\n service.getAllWithCount(ctx.params.options),\n },\n [BaseServiceCommands.insert]: {\n params: {\n data: 'object',\n overwrite: 'boolean|optional',\n },\n handler: async (ctx: Context<{ data: never & { id?: string }; overwrite: boolean }>) =>\n service.insert(ctx.params.data, ctx.params.overwrite),\n },\n [BaseServiceCommands.update]: {\n params: {\n id: 'string',\n data: 'object',\n overwrite: 'boolean|optional',\n },\n handler: async (ctx: Context<{ id: string; data: never; overwrite: boolean }>) =>\n service.update(ctx.params.id, ctx.params.data, ctx.params.overwrite),\n },\n },\n});\n","export { BaseServiceMixin } from './base-service-mixin';\n","import { Feature } from '@common-stack/server-core';\nimport { schema, messengerResolvers } from './graphql';\nimport { serviceContainerModule, proxyServiceContainerModule, contextServicesFromContainer } from './containers';\nimport {\n ChannelMoleculerService,\n MessengerNotificationMoleculerService,\n PostMoleculerService,\n PostThreadMoleculerService,\n ReactionMoleculerService,\n} from './plugins';\n\nexport default new Feature({\n schema,\n addBrokerClientServiceClass: [\n ChannelMoleculerService,\n PostMoleculerService,\n PostThreadMoleculerService,\n ReactionMoleculerService,\n MessengerNotificationMoleculerService,\n ],\n createResolversFunc: messengerResolvers,\n createServiceFunc: contextServicesFromContainer,\n createContainerFunc: [proxyServiceContainerModule],\n createHemeraContainerFunc: [serviceContainerModule],\n addBrokerMainServiceClass: [],\n});\n","import { Context, Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport {\n IChannelServiceCommands as ChannelServiceCommands,\n IMoleculerTopics as MoleculerTopics,\n IUserAccount,\n Maybe,\n Scalars,\n} from '@messenger-box/core';\nimport { IChannelService, ISaveChannelParams, ISaveDirectChannelParams } from '../interfaces';\nimport { config } from '../config';\nimport { TYPES } from '../constants';\nimport { BaseServiceMixin } from '../mixins';\n\nexport class ChannelMoleculerService extends Service {\n private channelService: IChannelService;\n\n constructor(broker: ServiceBroker, { container, ...settings }: { container: Container }) {\n super(broker);\n const topic = MoleculerTopics.ChannelService;\n this.channelService = container.get<IChannelService>(TYPES.ChannelService);\n\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin, BaseServiceMixin(this.channelService)],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {\n [ChannelServiceCommands.addMemberToChannel]: {\n handler: async (ctx: Context<{ channelId: string; memberId: string }>) =>\n this.channelService.addMemberToChannel(ctx.params.channelId, ctx.params.memberId),\n },\n [ChannelServiceCommands.createDirectChannel]: {\n handler: async (\n ctx: Context<{\n data: {\n receiver: Array<Maybe<Scalars['ID']>>;\n sender: string;\n displayName: string;\n };\n }>,\n ) => this.channelService.createDirectChannel(ctx.params.data),\n },\n [ChannelServiceCommands.deleteChannel]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.deleteChannel(ctx.params.id),\n },\n [ChannelServiceCommands.hideChannel]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.hideChannel(ctx.params.id),\n },\n [ChannelServiceCommands.getChannelCounts]: {\n handler: async (ctx: Context<{ teamId: string; userId: string }>) =>\n this.channelService.getChannelCounts(ctx.params.teamId, ctx.params.userId),\n },\n [ChannelServiceCommands.getByName]: {\n handler: async (ctx: Context<{ teamId: string; name: string }>) =>\n this.channelService.getByName(ctx.params.teamId, ctx.params.name),\n },\n [ChannelServiceCommands.getByNameIncludeDeleted]: {\n handler: async (ctx: Context<{ teamId: string; name: string }>) =>\n this.channelService.getByNameIncludeDeleted(ctx.params.teamId, ctx.params.name),\n },\n [ChannelServiceCommands.getByNames]: {\n handler: async (ctx: Context<{ teamId: string; names: string[] }>) =>\n this.channelService.getByNames(ctx.params.teamId, ctx.params.names),\n },\n [ChannelServiceCommands.getChannels]: {\n handler: async (\n ctx: Context<{ teamId: string; userId: string; includeDeleted: boolean; lastDeleteAt: number }>,\n ) =>\n this.channelService.getChannels(\n ctx.params.teamId,\n ctx.params.userId,\n ctx.params.includeDeleted,\n ctx.params.lastDeleteAt,\n ),\n },\n [ChannelServiceCommands.getChannelUnread]: {\n handler: async (ctx: Context<{ channelId: string; userId: string }>) =>\n this.channelService.getChannelUnread(ctx.params.channelId, ctx.params.userId),\n },\n [ChannelServiceCommands.getDeleted]: {\n handler: async (ctx: Context<{ teamId: string; offset: number; limit: number; userId: string }>) =>\n this.channelService.getDeleted(\n ctx.params.teamId,\n ctx.params.offset,\n ctx.params.limit,\n ctx.params.userId,\n ),\n },\n [ChannelServiceCommands.getDeletedByName]: {\n handler: async (ctx: Context<{ teamId: string; name: string }>) =>\n this.channelService.getDeletedByName(ctx.params.teamId, ctx.params.name),\n },\n [ChannelServiceCommands.saveDirectChannel]: {\n handler: async (ctx: Context<{ channel: ISaveDirectChannelParams }>) =>\n this.channelService.saveDirectChannel(ctx.params.channel),\n },\n [ChannelServiceCommands.saveChannel]: {\n handler: async (ctx: Context<{ data: ISaveChannelParams }>) =>\n this.channelService.saveChannel(ctx.params.data),\n },\n [ChannelServiceCommands.invalidateChannelByName]: {\n handler: async (ctx: Context<{ teamId: string; name: string }>) =>\n this.channelService.invalidateChannelByName(ctx.params.teamId, ctx.params.name),\n },\n [ChannelServiceCommands.getPinnedPosts]: {\n handler: async (ctx: Context<{ channelId: string }>) =>\n this.channelService.getPinnedPosts(ctx.params.channelId),\n },\n [ChannelServiceCommands.getFromMaster]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.getFromMaster(ctx.params.id),\n },\n [ChannelServiceCommands.restore]: {\n handler: async (ctx: Context<{ channelId: string; time: Date }>) =>\n this.channelService.restore(ctx.params.channelId, ctx.params.time),\n },\n [ChannelServiceCommands.permanentDeleteByTeam]: {\n handler: async (ctx: Context<{ teamId: string }>) =>\n this.channelService.permanentDeleteByTeam(ctx.params.teamId),\n },\n [ChannelServiceCommands.permanentDelete]: {\n handler: async (ctx: Context<{ channelId: string }>) =>\n this.channelService.permanentDelete(ctx.params.channelId),\n },\n [ChannelServiceCommands.permanentDeleteMembersByChannel]: {\n handler: async (ctx: Context<{ channelId: string }>) =>\n this.channelService.permanentDeleteMembersByChannel(ctx.params.channelId),\n },\n [ChannelServiceCommands.getPrivateChannelsForTeam]: {\n handler: async (ctx: Context<{ teamId: string; offset: number; limit: number }>) =>\n this.channelService.getPrivateChannelsForTeam(\n ctx.params.teamId,\n ctx.params.offset,\n ctx.params.limit,\n ),\n },\n [ChannelServiceCommands.getPublicChannelsForTeam]: {\n handler: async (ctx: Context<{ teamId: string; offset: number; limit: number }>) =>\n this.channelService.getPublicChannelsForTeam(\n ctx.params.teamId,\n ctx.params.offset,\n ctx.params.limit,\n ),\n },\n [ChannelServiceCommands.getPublicChannelsByIdsForTeam]: {\n handler: async (ctx: Context<{ teamId: string; channelsIds: string[] }>) =>\n this.channelService.getPublicChannelsByIdsForTeam(ctx.params.teamId, ctx.params.channelsIds),\n },\n [ChannelServiceCommands.getTeamChannels]: {\n handler: async (ctx: Context<{ teamId: string }>) =>\n this.channelService.getTeamChannels(ctx.params.teamId),\n },\n [ChannelServiceCommands.saveMultipleMembers]: {\n handler: async (ctx: Context<{ members: IUserAccount[] }>) =>\n this.channelService.saveMultipleMembers(ctx.params.members),\n },\n [ChannelServiceCommands.leaveChannel]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.leaveChannel(ctx.params.id),\n },\n [ChannelServiceCommands.deleteChannel]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.deleteChannel(ctx.params.id),\n },\n [ChannelServiceCommands.isMember]: {\n params: {\n id: 'string',\n user: 'string',\n },\n handler: async ({ params }: Context<{ id: string; user: string }>) =>\n this.channelService.isMember(params.id, params.user),\n },\n [ChannelServiceCommands.viewChannel]: {\n params: {\n id: 'string',\n user: 'string',\n },\n handler: async ({ params }: Context<{ id: string; user: string }>) =>\n this.channelService.viewChannel(params.id, params.user),\n },\n },\n });\n }\n}\n","export * from './channel-moleculer-service';\nexport * from './post-moleculer-service';\nexport * from './post-thread-moleculer-service';\nexport * from './reaction-moleculer-service';\nexport { MessengerNotificationMoleculerService } from './messenger-notification-moleculer-service';\n","import { Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport {\n IMessengerNotificationServiceCommands,\n IMoleculerCronServiceName,\n IMoleculerServiceName,\n} from '@messenger-box/core';\nimport CronTasks from '@skoropletov/moleculer-cron-tasks';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { CommonType } from '@common-stack/core';\nimport { ClientTypes } from '@common-stack/client-core';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport { config } from '../config';\nimport { IMessengerNotificationService } from '../interfaces';\nimport { NotificationDurationUnitEnum } from '../enums';\nimport { TYPES } from '../constants';\n\nexport class MessengerNotificationMoleculerService extends Service {\n private messengerService: IMessengerNotificationService;\n\n private cdmLogger: typeof Logger;\n\n private readonly container: Container;\n\n constructor(broker: ServiceBroker, { container }: { container: Container } & { settings: any }) {\n super(broker);\n this.container = container;\n this.parseServiceSchema({\n name: IMoleculerServiceName.MessengerNotificationService,\n dependencies: [],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n mixins: [ApolloClientMixin],\n async started() {\n this.messengerService = this.container.get(TYPES.MessengerNotificationService);\n this.cdmLogger = this.container.get(CommonType.LOGGER);\n this.registerCronService(this.messengerService);\n },\n actions: {\n [IMessengerNotificationServiceCommands.sendNotificationOfUnreadMessages]: {\n params: {\n unit: 'string',\n value: 'number',\n },\n handler({ params }) {\n const { unit, value } = params;\n return this.messengerService.sendNotificationOfUnreadMessages(unit, value);\n },\n },\n },\n });\n }\n\n registerCronService(service: IMessengerNotificationService): void {\n this.broker.createService({\n name: IMoleculerCronServiceName.MessengerCronJob,\n mixins: [CronTasks],\n tasks: [\n {\n name: `${IMessengerNotificationServiceCommands.sendNotificationOfUnreadMessages}`,\n cronTime: '0 * * * *',\n async callback() {\n return service.sendNotificationOfUnreadMessages(NotificationDurationUnitEnum.hours, 1);\n },\n },\n ],\n });\n }\n}\n","import { Service, ServiceBroker } from 'moleculer';\nimport { IMoleculerTopics as MoleculerTopics, IPost } from '@messenger-box/core';\nimport { Container } from 'inversify';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport { config } from '../config';\nimport { TYPES } from '../constants';\nimport { BaseServiceMixin } from '../mixins';\nimport { IPostService, IPostServiceInput } from '../interfaces';\n\nexport class PostMoleculerService extends Service {\n private readonly postService: IPostService;\n\n constructor(broker: ServiceBroker, { container }: { container: Container }) {\n super(broker);\n const topic = MoleculerTopics.PostService;\n this.postService = container.get<IPostService>(TYPES.PostService);\n\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin, BaseServiceMixin<IPost, IPostServiceInput, Partial<IPost>>(this.postService)],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {\n attachUploadedFile: {\n params: {\n postId: 'string',\n createdBy: 'string',\n file: 'object',\n },\n handler(ctx) {\n const { postId, createdBy, file } = ctx.params;\n return this.postService.attachUploadedFile(postId, file, createdBy);\n },\n },\n createFileUploadLink: {\n params: {\n postId: 'string',\n filename: 'string',\n userId: 'string',\n },\n handler(ctx) {\n const { postId, filename, userId } = ctx.params;\n return this.postService.createFileUploadLink(postId, filename, userId);\n },\n },\n attachUploadedFiles: {\n params: {\n postId: 'string',\n createdBy: 'string',\n files: {\n type: 'array',\n items: 'object',\n },\n },\n handler(ctx) {\n const { postId, createdBy, files } = ctx.params;\n return this.postService.attachUploadedFiles(postId, files, createdBy);\n },\n },\n createFilesUploadLink: {\n params: {\n postId: 'string',\n filenames: {\n type: 'array',\n items: 'string',\n },\n userId: 'string',\n },\n handler(ctx) {\n const { postId, filenames, userId } = ctx.params;\n return this.postService.createFilesUploadLink(postId, filenames, userId);\n },\n },\n deleteFile: {\n params: {\n url: 'string',\n },\n handler(ctx) {\n const { url } = ctx.params;\n return this.postService.deleteFile(url);\n },\n },\n readMessage: {\n params: {\n channelId: 'string',\n messageId: 'string',\n user: 'string',\n },\n handler(ctx) {\n const { user, ...rest } = ctx.params;\n return this.postService.readMessage(rest, user);\n },\n },\n deliverMessage: {\n params: {\n channelId: 'string',\n messageId: 'string',\n user: 'string',\n },\n handler(ctx) {\n const { user, ...rest } = ctx.params;\n return this.postService.deliverMessage(rest, user);\n },\n },\n },\n });\n }\n}\n","import { Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { IMoleculerTopics as MoleculerTopics } from '@messenger-box/core';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport { TYPES } from '../constants';\nimport { IPostThreadService } from '../interfaces';\nimport { BaseServiceMixin } from '../mixins';\nimport { config } from '../config';\n\nexport class PostThreadMoleculerService extends Service {\n private readonly postThreadService: IPostThreadService;\n\n constructor(broker: ServiceBroker, { container, ...settings }: { container: Container }) {\n super(broker);\n const topic = MoleculerTopics.PostThreadService;\n this.postThreadService = container.get<IPostThreadService>(TYPES.PostThreadService);\n\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin, BaseServiceMixin(this.postThreadService)],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {},\n });\n }\n}\n","import { Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { IMoleculerTopics as MoleculerTopics } from '@messenger-box/core';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport { TYPES } from '../constants';\nimport { IReactionService } from '../interfaces';\nimport { BaseServiceMixin } from '../mixins';\nimport { config } from '../config';\n\nexport class ReactionMoleculerService extends Service {\n private readonly reactionService: IReactionService;\n\n constructor(broker: ServiceBroker, { container }: { container: Container }) {\n super(broker);\n const topic = MoleculerTopics.ReactionService;\n this.reactionService = container.get<IReactionService>(TYPES.ReactionService);\n\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin, BaseServiceMixin(this.reactionService)],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {},\n });\n }\n}\n","export * from './settings';\n","export * from './post-settings';\n","import { ConfigurationScope, IConfigurationPropertySchema } from '@adminide-stack/core';\nimport { localize } from '@vscode-alt/monaco-editor/esm/vs/nls';\n\nexport const POST_SETTINGS_PREFIX = 'messenger.posts';\n\nexport const PostTypes = {\n isPinned: `${POST_SETTINGS_PREFIX}.isPinned`,\n isDelivered: `${POST_SETTINGS_PREFIX}.isDelivered`,\n isRead: `${POST_SETTINGS_PREFIX}.isRead`,\n fromBot: `${POST_SETTINGS_PREFIX}.fromBot`,\n disableGroupHighLight: `${POST_SETTINGS_PREFIX}.disableGroupHighLight`,\n deletedBy: `${POST_SETTINGS_PREFIX}.deletedBy`,\n};\n\nexport const PostSettings: { [path: string]: IConfigurationPropertySchema } = {\n [PostTypes.isPinned]: {\n type: 'boolean',\n default: false,\n description: localize(PostTypes.isPinned, 'Message is Pinned'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.isDelivered]: {\n type: 'boolean',\n default: [],\n description: localize(PostTypes.isDelivered, 'Message is Delivered'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.disableGroupHighLight]: {\n type: 'boolean',\n default: [],\n description: localize(PostTypes.isDelivered, 'Disable Group Highlight'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.isRead]: {\n type: 'boolean',\n default: [],\n description: localize(PostTypes.isRead, 'Message has been read'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.fromBot]: {\n type: 'boolean',\n default: [],\n description: localize(PostTypes.isRead, 'Message from bot'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.deletedBy]: {\n type: 'string',\n default: [],\n description: localize(PostTypes.isRead, 'Deleted by user'),\n scope: ConfigurationScope.MACHINE,\n },\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, IUserAccount } from '@messenger-box/core';\nimport { BaseService } from './base-service';\nimport { DEFAULT_NOTIFY_PROPS, TYPES } from '../constants';\nimport {\n IChannelRepository,\n IChannelService,\n ICreateDirectChannelParams,\n INotificationProps,\n IPostService,\n ISaveChannelParams,\n ISaveDirectChannelParams,\n} from '../interfaces';\n\nexport class ChannelService extends BaseService<IChannel, Omit<IChannel, 'id'>> implements IChannelService {\n constructor(\n @inject(TYPES.ChannelRepository)\n readonly repository: IChannelRepository,\n @inject(TYPES.PostService)\n private readonly postService: IPostService,\n ) {\n super(repository);\n }\n\n async isMember(channelId: string, user: string): Promise<boolean> {\n const channel = await this.get(channelId);\n return !!channel?.members?.find((member) => member.user.toString() === user.toString());\n }\n\n private static getDmNameFromIds(senderId: string, receiverId: string) {\n return `${senderId}__${receiverId}`;\n }\n\n get defaultNotifyProps(): INotificationProps {\n // #Todo: To be moved to settings\n return DEFAULT_NOTIFY_PROPS;\n }\n\n private static 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): Promise<number> {\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: this.defaultNotifyProps,\n },\n ];\n receiver.forEach((re) => {\n chlMember.push({\n user: re,\n schemeAdmin: false,\n notifyProps: this.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: this.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 ChannelService.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: this.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 getDeleted(teamId: string, offset: number, limit: number, userId: string): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getDeletedByName(teamId: string, name: string): Promise<IChannel | Error> {\n return Promise.resolve(undefined);\n }\n\n getFromMaster(id: string): Promise<IChannel | Error> {\n return Promise.resolve(undefined);\n }\n\n getMoreChannels(teamId: string, userId: string, offset: number, limit: number): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getPrivateChannelsForTeam(teamId: string, offset: number, limit: number): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getPublicChannelsByIdsForTeam(teamId: string, channelsIds: string[]): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getPublicChannelsForTeam(teamId: string, offset: number, limit: number): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getTeamChannels(teamId: string): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n hideChannel(id: string): Promise<boolean> {\n return Promise.resolve(false);\n }\n\n invalidateChannelByName(teamId: string, name: string): Promise<void> {\n return Promise.resolve();\n }\n\n leaveChannel(id: string): Promise<boolean> {\n return Promise.resolve(false);\n }\n\n async viewChannel(id: string, user: string): Promise<boolean> {\n // Accessing private property\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n await this.repository.model.updateOne(\n { _id: id },\n {\n 'members.$[elem].lastViewedAt': new Date(),\n },\n {\n arrayFilters: [{ 'elem.user': user }],\n },\n );\n return true;\n }\n\n permanentDelete(channelId: string): void | Error {\n return undefined;\n }\n\n permanentDeleteByTeam(teamId: string): void | Error {\n return undefined;\n }\n\n permanentDeleteMembersByChannel(channelId: string): void | Error {\n return undefined;\n }\n\n saveMultipleMembers(members: IUserAccount[]): Promise<IUserAccount[] | Error> {\n return Promise.resolve(undefined);\n }\n}\n","export * from './channel-service';\nexport * from './post-service';\nexport * from './post-thread-service';\nexport * from './reaction-service';\nexport * from './base-service';\nexport * from './messenger-notification-service';\n","import { omit } from 'lodash';\nimport sub from 'date-fns/sub';\nimport compareAsc from 'date-fns/compareAsc';\nimport { IMailServiceAction, IMoleculerServiceName as IMailMoleculerServiceName } from '@container-stack/mailing-api';\nimport {\n IMoleculerServiceName as INotificationMoleculerServiceName,\n ISmsServiceActions,\n} from '@messenger-box/notification-api-core';\nimport { ServiceBroker } from 'moleculer';\nimport { inject, injectable } from 'inversify';\nimport { IChannel, IMailTemplateId, IPost, IPreference_Account as IPreferenceAccount } from '@messenger-box/core';\nimport { IAccountServiceAction, IMoleculerServiceName, IUserAccount } from '@adminide-stack/core';\nimport { CommonType } from '@common-stack/core';\nimport * as Logger from 'bunyan';\nimport { TYPES } from '../constants';\nimport { IChannelRepository, IMessengerNotificationService, IPostRepository } from '../interfaces';\nimport { NotificationDurationUnitEnum } from '../enums';\nimport { config } from '../config';\n\nexport interface IChannelWithPost extends IChannel {\n post: IPost;\n}\n\nexport interface IMemberWithAllChannels {\n [key: string]: IChannelWithPost[];\n}\n\n@injectable()\nexport class MessengerNotificationService implements IMessengerNotificationService {\n users: Record<string, IUserAccount> = {};\n\n userPreferences: Record<string, IPreferenceAccount> = {};\n\n constructor(\n @inject(TYPES.ChannelRepository)\n private readonly channelRepository: IChannelRepository,\n @inject(TYPES.PostRepository)\n private readonly postRepository: IPostRepository,\n @inject(CommonType.MOLECULER_BROKER)\n private readonly broker: ServiceBroker,\n @inject('Logger')\n private readonly logger: Logger,\n ) {}\n\n private async getLatestMessageInAllChannels(\n unit: NotificationDurationUnitEnum,\n value: number,\n ): Promise<IChannelWithPost[]> {\n const today = new Date();\n const lastDay = sub(today, { [unit]: value });\n const channels = await (this.channelRepository as any).model.aggregate([\n {\n $match: {\n lastPostAt: { $gte: lastDay, $lte: today },\n },\n },\n {\n $project: {\n _id: true,\n lastPostAt: true,\n creator: true,\n members: {\n $filter: {\n input: '$members',\n as: 'item',\n cond: {\n $and: [\n {\n $lte: ['$$item.lastViewedAt', '$lastPostAt'],\n },\n ],\n },\n },\n },\n },\n },\n ]);\n const posts = await this.postRepository.getAll({\n criteria: {\n channel: { $in: channels.map(({ _id }) => _id) },\n createdAt: { $in: channels.map(({ lastPostAt }) => lastPostAt) },\n },\n });\n\n return channels.map((channel) => ({\n ...channel,\n // eslint-disable-next-line no-underscore-dangle\n post: posts.find((post) => post.channel.toString() === channel._id.toString()),\n }));\n }\n\n private groupByMember(channels: IChannelWithPost[]): IMemberWithAllChannels {\n return channels.reduce((acc, curr) => {\n const members = this.findMembersWithUnreadMessage(curr);\n const channelWithoutMembers = omit(curr, ['members']);\n return members.reduce(\n (memberAcc, memberCurr) => ({\n ...acc,\n [memberCurr.user]: Array.isArray(memberAcc[memberCurr.user])\n ? [...memberAcc[memberCurr.user], channelWithoutMembers]\n : [channelWithoutMembers],\n }),\n acc,\n );\n }, {});\n }\n\n private findMembersWithUnreadMessage(channelMessage: IChannelWithPost): IChannel['members'] {\n return channelMessage.members.filter(\n ({ lastViewedAt }) => compareAsc(channelMessage.lastPostAt, lastViewedAt),\n [],\n );\n }\n\n private async sendMail(user: string, channels: IChannelWithPost[]): Promise<void> {\n this.logger.debug('Outgoing request to SendMail', { user: this.users[user], channels });\n const { notificationEmail, email, username } = this.users[user];\n await this.broker.call(`${IMailMoleculerServiceName.MailService}.${IMailServiceAction.send}`, {\n request: {\n topic: 'Unread Messages Notification',\n to: notificationEmail || email,\n templateId: IMailTemplateId.MessageNotificationServiceId,\n from: config.MAIL_SEND_DEFAULT_EMAIL,\n subject: `You have Unread Messages in ${channels.length} chats`,\n variables: {\n text: `Hey ${username},\\nYou have Unread Messages in ${channels.length} chats`,\n user,\n channel: channels,\n },\n },\n });\n }\n\n private async sendText(user: string, channels: IChannelWithPost[]): Promise<void> {\n this.logger.debug('Outgoing request to SendSMS', { user: this.users[user], channels });\n // #Todo Get User Full Name and Phone Number\n const { username, phoneNumber } = this.users[user];\n const [number] = phoneNumber;\n if (!number) {\n this.logger.debug('Outgoing request to SendSMS Skipped, reason No phoneNumber found', {\n user: this.users[user],\n channels,\n });\n }\n await this.broker.call(`${INotificationMoleculerServiceName.SmsService}.${ISmsServiceActions.send}`, {\n to: number,\n body: `Hey ${username},\\nYou have Unread Messages in ${channels.length} chats`,\n });\n }\n\n private async sendPushNotifications(user: string, channels: IChannelWithPost[]): Promise<void> {\n // #Todo Dispatch Push notification once support is added\n this.logger.debug('Outgoing request to SendPushNotification', { user: this.users[user], channels });\n return Promise.resolve();\n }\n\n private getGlobalNotificationSettings(user: string): Promise<IPreferenceAccount> {\n // #Todo fetch from preferences\n return Promise.resolve({\n global: {\n notification: {\n offlineMessages: {\n sms: true,\n email: true,\n browser: true,\n },\n },\n },\n });\n }\n\n private async getUser(id: string): Promise<IUserAccount> {\n return this.broker.call<IUserAccount, { id: string }>(\n `${IMoleculerServiceName.AccountUser}.${IAccountServiceAction.findAccountById}`,\n {\n id,\n },\n );\n }\n\n private async fetchUsersForMembers(users: string[]) {\n return Promise.all(\n users\n .filter((user) => !Object.keys(this.users).includes(user))\n .map(async (user) => {\n this.users[user] = await this.getUser(user);\n this.userPreferences[user] = await this.getGlobalNotificationSettings(user);\n }),\n );\n }\n\n private async sendNotificationToUser([user, channels]: [string, IChannelWithPost[]]): Promise<void> {\n await this.fetchUsersForMembers([user, ...channels.map(({ post }) => post.editedBy.toString())]);\n const { email, sms, browser } = this.userPreferences[user]?.global?.notification?.offlineMessages || {};\n const filteredChannels = channels.filter(({ post }) => user !== post.editedBy.toString());\n if (filteredChannels?.length === 0) {\n return;\n }\n if (email) {\n await this.sendMail(user, filteredChannels);\n }\n if (sms) {\n await this.sendText(user, filteredChannels);\n }\n if (browser) {\n await this.sendPushNotifications(user, filteredChannels);\n }\n }\n\n async sendNotificationOfUnreadMessages(unit: NotificationDurationUnitEnum, value: number): Promise<void> {\n const channels = await this.getLatestMessageInAllChannels(unit, value);\n const membersWithUnreadMessagesInChannels = this.groupByMember(channels);\n await Promise.all(\n Object.entries(membersWithUnreadMessagesInChannels).map(this.sendNotificationToUser.bind(this)),\n );\n }\n}\n","/* eslint-disable no-useless-constructor */\nimport { inject } from 'inversify';\nimport { set } from 'lodash';\nimport { IFileInfo, IFileRefType, IMessageIdentifier, IPost, IUploadedFileInput } from '@messenger-box/core';\nimport { IFileInfoService, TYPES as FileUploadTypes } from '@container-stack/file-info-core';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { ChannelRepository, PostRepository } from '../store';\nimport { IPostService, IPostServiceInput } from '../interfaces';\nimport { PostTypes } from '../preferences';\n\nexport class PostService extends BaseService<IPost, IPostServiceInput, Partial<IPost>> implements IPostService {\n constructor(\n @inject(TYPES.PostRepository)\n repository: PostRepository,\n @inject(TYPES.ChannelRepository)\n private readonly channelRepo: ChannelRepository,\n @inject(FileUploadTypes.FileInfoService)\n private readonly fileInfoService: IFileInfoService,\n ) {\n super(repository);\n }\n\n createFileUploadLink(postId: string, filename: string, userId: string): Promise<string> {\n return this.fileInfoService.uploadByUrl({\n filename,\n refType: IFileRefType.Post as never,\n ref: postId,\n userId,\n });\n }\n\n async attachUploadedFile(postId: string, file: IUploadedFileInput, createdBy: string): Promise<IFileInfo> {\n const { id } = await this.fileInfoService.createUploadedFile({\n ...file,\n refType: IFileRefType.Post as never,\n ref: postId,\n createdBy,\n });\n const fileResponse = await this.fileInfoService.get(id);\n return {\n ...fileResponse,\n url: this.fileInfoService.getDefaultImage(fileResponse.url),\n };\n }\n\n createFilesUploadLink(postId: string, filenames: string[], userId: string): Promise<string[]> {\n return Promise.all(\n filenames.map((filename) =>\n this.fileInfoService.uploadByUrl({\n filename,\n refType: IFileRefType.Post as never,\n ref: postId,\n userId,\n }),\n ),\n );\n }\n\n attachUploadedFiles(postId: string, files: IUploadedFileInput[], createdBy: string): Promise<IFileInfo[]> {\n return Promise.all(\n files.map(async (file) => {\n const { id } = await this.fileInfoService.createUploadedFile({\n ...file,\n refType: IFileRefType.Post as never,\n ref: postId,\n createdBy,\n });\n const fileResponse = await this.fileInfoService.get(id);\n return {\n ...fileResponse,\n url: this.fileInfoService.getDefaultImage(fileResponse.url),\n };\n }),\n );\n }\n\n async create(data: IPostServiceInput): Promise<IPost> {\n const post = await super.create(data);\n const { channel } = data;\n // Accessing private property\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n await this.channelRepo.model.updateOne(\n { _id: channel },\n {\n lastPostAt: post.createdAt,\n $inc: {\n totalMsgCount: 1,\n totalMsgCountRoot: 1,\n 'members.$[elem].msgCountRoot': 1,\n 'members.$[elem].msgCount': 1,\n },\n },\n {\n arrayFilters: [{ 'elem.user': data.author }],\n },\n );\n return post;\n }\n\n deleteFile(url: string): Promise<boolean> {\n return this.fileInfoService.deleteByUrl(url);\n }\n\n async readMessage(messageId: IMessageIdentifier, user: string): Promise<boolean> {\n await this.update(messageId.messageId, {\n props: {\n [`[${user}]`]: set({}, PostTypes.isRead, true),\n },\n });\n return true;\n }\n\n async deliverMessage(messageId: IMessageIdentifier, user: string): Promise<boolean> {\n await this.update(messageId.messageId, {\n props: {\n [`[${user}]`]: set({}, PostTypes.isDelivered, true),\n },\n });\n return true;\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 { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport { FilterQuery } from 'mongoose';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport { IBaseServiceCommands as BaseServiceCommands, IMoleculerTopics as MoleculerTopics } from '@messenger-box/core';\nimport { GetAllArgs, IBaseService } from '../../interfaces';\n\ntype MethodsNames<T, C, U> = keyof IBaseService<T, C, U>;\ntype MethodResponse<T, C, U, M extends MethodsNames<T, C, U>> = ReturnType<IBaseService<T, C, U>[M]>;\n\n@injectable()\nexport class BaseProxyService<T, C = T, U = T> implements IBaseService<T, C, U> {\n protected logger: Logger;\n\n protected topic = MoleculerTopics.BaseService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n private readonly broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n this.logger = logger.child({ className: 'BaseProxyService' });\n }\n\n bulkCreate(data: C[]): MethodResponse<T, C, U, 'bulkCreate'> {\n return this.callAction<T[], { data: C[] }>(BaseServiceCommands.bulkCreate, { data });\n }\n\n count(conditions?: FilterQuery<Document>): MethodResponse<T, C, U, 'count'> {\n return this.callAction(BaseServiceCommands.count, { conditions });\n }\n\n create(data: C): MethodResponse<T, C, U, 'create'> {\n return this.callAction(BaseServiceCommands.create, { data });\n }\n\n delete(id: string | FilterQuery<Document>): MethodResponse<T, C, U, 'delete'> {\n return this.callAction(BaseServiceCommands.delete, { id });\n }\n\n get(id?: string | FilterQuery<Document>): MethodResponse<T, C, U, 'get'> {\n return this.callAction(BaseServiceCommands.get, { id });\n }\n\n getAll(options?: GetAllArgs<Document>): MethodResponse<T, C, U, 'getAll'> {\n return this.callAction(BaseServiceCommands.getAll, { options });\n }\n\n getAllWithCount(options: GetAllArgs<Document>): MethodResponse<T, C, U, 'getAllWithCount'> {\n return this.callAction(BaseServiceCommands.getAllWithCount, { options });\n }\n\n insert(data: C | U, overwrite?: boolean): MethodResponse<T, C, U, 'insert'> {\n return this.callAction(BaseServiceCommands.insert, { data, overwrite });\n }\n\n update(id: string, data: U, overwrite?: boolean): MethodResponse<T, C, U, 'update'> {\n return this.callAction<T>(BaseServiceCommands.update, { id, data, overwrite });\n }\n\n protected async callAction<T, P = unknown>(command: string, params?: P): Promise<T> {\n return this.broker.call<T, P>(`${this.topic}.${command}`, params);\n }\n}\n","import { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport {\n IChannel,\n IChannelServiceCommands as ChannelServiceCommands,\n IMoleculerTopics as MoleculerTopics,\n IUserAccount,\n Maybe,\n Scalars,\n} from '@messenger-box/core';\nimport { IChannelService, ISaveChannelParams, ISaveDirectChannelParams } from '../../interfaces';\nimport { BaseProxyService } from './base-proxy-service';\n\ntype MethodsNames = keyof IChannelService;\ntype MethodResponse<T extends MethodsNames> = ReturnType<IChannelService[T]>;\n\n@injectable()\nexport class ChannelProxyService extends BaseProxyService<IChannel, Omit<IChannel, 'id'>> implements IChannelService {\n topic = MoleculerTopics.ChannelService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n super(broker, logger);\n this.logger = logger.child({ className: 'ChannelProxyService' });\n }\n\n addMemberToChannel(channelId: string, memberId: string): MethodResponse<'addMemberToChannel'> {\n return this.callAction(ChannelServiceCommands.addMemberToChannel, { channelId, memberId });\n }\n\n createDirectChannel(data: {\n receiver: Array<Maybe<Scalars['ID']>>;\n sender: string;\n displayName: string;\n }): MethodResponse<'createDirectChannel'> {\n return this.callAction(ChannelServiceCommands.createDirectChannel, { data });\n }\n\n deleteChannel(id: string): MethodResponse<'deleteChannel'> {\n return this.callAction(ChannelServiceCommands.deleteChannel, { id });\n }\n\n getByName(teamId: string, name: string): MethodResponse<'getByName'> {\n return this.callAction(ChannelServiceCommands.getByName, { teamId, name });\n }\n\n getByNameIncludeDeleted(teamId: string, name: string): MethodResponse<'getByNameIncludeDeleted'> {\n return this.callAction(ChannelServiceCommands.getByNameIncludeDeleted, { teamId, name });\n }\n\n getByNames(teamId: string, names: string[]): MethodResponse<'getByNames'> {\n return this.callAction(ChannelServiceCommands.getByNames, { teamId, names });\n }\n\n getChannelCounts(teamId: string, userId: string): MethodResponse<'getChannelCounts'> {\n return this.callAction(ChannelServiceCommands.getChannelCounts, { teamId, userId });\n }\n\n getChannelUnread(channelId: string, userId: string): MethodResponse<'getChannelUnread'> {\n return this.callAction(ChannelServiceCommands.getChannelUnread, { channelId, userId });\n }\n\n getChannels(\n teamId: string,\n userId: string,\n includeDeleted: boolean,\n lastDeleteAt: number,\n ): MethodResponse<'getChannels'> {\n return this.callAction(ChannelServiceCommands.getChannels, { teamId, userId, includeDeleted, lastDeleteAt });\n }\n\n getDeleted(teamId: string, offset: number, limit: number, userId: string): MethodResponse<'getDeleted'> {\n return this.callAction(ChannelServiceCommands.getDeleted, { teamId, offset, limit, userId });\n }\n\n getDeletedByName(teamId: string, name: string): MethodResponse<'getDeletedByName'> {\n return this.callAction(ChannelServiceCommands.getDeletedByName, { teamId, name });\n }\n\n getFromMaster(id: string): MethodResponse<'getFromMaster'> {\n return this.callAction(ChannelServiceCommands.getFromMaster, { id });\n }\n\n getMoreChannels(teamId: string, userId: string, offset: number, limit: number): MethodResponse<'getMoreChannels'> {\n return this.callAction(ChannelServiceCommands.getMoreChannels, { teamId, userId, offset, limit });\n }\n\n getPinnedPosts(channelId: string): MethodResponse<'getPinnedPosts'> {\n return this.callAction(ChannelServiceCommands.getPinnedPosts, { channelId });\n }\n\n getPrivateChannelsForTeam(\n teamId: string,\n offset: number,\n limit: number,\n ): MethodResponse<'getPrivateChannelsForTeam'> {\n return this.callAction(ChannelServiceCommands.getPrivateChannelsForTeam, { teamId, offset, limit });\n }\n\n getPublicChannelsByIdsForTeam(\n teamId: string,\n channelsIds: string[],\n ): MethodResponse<'getPublicChannelsByIdsForTeam'> {\n return this.callAction(ChannelServiceCommands.getPublicChannelsByIdsForTeam, { teamId, channelsIds });\n }\n\n getPublicChannelsForTeam(\n teamId: string,\n offset: number,\n limit: number,\n ): MethodResponse<'getPublicChannelsForTeam'> {\n return this.callAction(ChannelServiceCommands.getPublicChannelsForTeam, { teamId, offset, limit });\n }\n\n getTeamChannels(teamId: string): MethodResponse<'getTeamChannels'> {\n return this.callAction(ChannelServiceCommands.getTeamChannels, { teamId });\n }\n\n hideChannel(id: string): MethodResponse<'hideChannel'> {\n return this.callAction(ChannelServiceCommands.hideChannel, { id });\n }\n\n invalidateChannelByName(teamId: string, name: string): MethodResponse<'invalidateChannelByName'> {\n return this.callAction(ChannelServiceCommands.invalidateChannelByName, { teamId, name });\n }\n\n leaveChannel(id: string): MethodResponse<'leaveChannel'> {\n return this.callAction(ChannelServiceCommands.leaveChannel, { id });\n }\n\n permanentDelete(channelId: string): MethodResponse<'permanentDelete'> {\n this.callAction(ChannelServiceCommands.permanentDelete, { channelId });\n }\n\n permanentDeleteByTeam(teamId: string): MethodResponse<'permanentDeleteByTeam'> {\n this.callAction(ChannelServiceCommands.permanentDeleteByTeam, { teamId });\n }\n\n permanentDeleteMembersByChannel(channelId: string): MethodResponse<'permanentDeleteMembersByChannel'> {\n this.callAction(ChannelServiceCommands.permanentDeleteMembersByChannel, { channelId });\n }\n\n restore(channelId: string, time: Date): MethodResponse<'restore'> {\n return this.callAction(ChannelServiceCommands.restore, { channelId, time });\n }\n\n saveChannel(data: ISaveChannelParams): MethodResponse<'saveChannel'> {\n return this.callAction(ChannelServiceCommands.saveChannel, { data });\n }\n\n saveDirectChannel(channel: ISaveDirectChannelParams): MethodResponse<'saveDirectChannel'> {\n return this.callAction(ChannelServiceCommands.saveDirectChannel, { channel });\n }\n\n saveMultipleMembers(members: IUserAccount[]): MethodResponse<'saveMultipleMembers'> {\n return this.callAction(ChannelServiceCommands.saveMultipleMembers, { members });\n }\n\n isMember(channelId: string, user: string): Promise<boolean> {\n return this.callAction(ChannelServiceCommands.isMember, { id: channelId, user });\n }\n\n viewChannel(id: string, user: string): Promise<boolean> {\n return this.callAction(ChannelServiceCommands.viewChannel, { id, user });\n }\n}\n","export * from './channel-microservice';\nexport * from './post-thread-microservice';\nexport * from './post-microservice';\nexport * from './reaction-microservice';\nexport * from './messenger-notification-microservice';\n","import { inject, injectable } from 'inversify';\nimport { CommonType } from '@common-stack/core';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { IMessengerNotificationServiceCommands, IMoleculerTopics } from '@messenger-box/core';\nimport { IMessengerNotificationService } from '../../interfaces';\nimport { NotificationDurationUnitEnum } from '../../enums';\n\n@injectable()\nexport class MessengerNotificationMicroservice implements IMessengerNotificationService {\n topic = IMoleculerTopics.MessengerNotificationService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n private readonly broker: ServiceBroker,\n @inject('Logger')\n private readonly logger: Logger,\n ) {\n this.logger = logger.child({ className: 'MessengerNotificationMicroservice' });\n }\n\n protected async callAction<T, P = unknown>(command: string, params?: P): Promise<T> {\n return this.broker.call<T, P>(`${this.topic}.${command}`, params);\n }\n\n sendNotificationOfUnreadMessages(unit: NotificationDurationUnitEnum, value: number): Promise<void> {\n return this.callAction(IMessengerNotificationServiceCommands.sendNotificationOfUnreadMessages, {\n unit,\n value,\n });\n }\n}\n","import { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport {\n IMoleculerTopics as MoleculerTopics,\n IPost,\n IPostServiceCommands,\n IUploadedFileInput,\n IFileInfo,\n IMessageIdentifier,\n} from '@messenger-box/core';\nimport { IPostService, IPostServiceInput } from '../../interfaces';\nimport { BaseProxyService } from './base-proxy-service';\n\n@injectable()\nexport class PostProxyService\n extends BaseProxyService<IPost, IPostServiceInput, Partial<IPost>>\n implements IPostService\n{\n topic = MoleculerTopics.PostService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n super(broker, logger);\n this.logger = logger.child({ className: 'PostProxyService' });\n }\n\n attachUploadedFile(postId: string, file: IUploadedFileInput, createdBy: string): Promise<IFileInfo> {\n return this.callAction(IPostServiceCommands.attachUploadedFile, { file, createdBy, postId });\n }\n\n createFileUploadLink(postId: string, filename: string, userId: string): Promise<string> {\n return this.callAction(IPostServiceCommands.createFileUploadLink, { filename, userId, postId });\n }\n\n attachUploadedFiles(postId: string, files: IUploadedFileInput[], createdBy: string): Promise<IFileInfo[]> {\n return this.callAction(IPostServiceCommands.attachUploadedFiles, { files, createdBy, postId });\n }\n\n createFilesUploadLink(postId: string, filenames: string[], userId: string): Promise<string[]> {\n return this.callAction(IPostServiceCommands.createFilesUploadLink, { filenames, userId, postId });\n }\n\n deleteFile(url: string): Promise<boolean> {\n return this.callAction(IPostServiceCommands.deleteFile, { url });\n }\n\n readMessage(messageId: IMessageIdentifier, user: string): Promise<boolean> {\n return this.callAction(IPostServiceCommands.readMessage, { ...messageId, user });\n }\n\n deliverMessage(messageId: IMessageIdentifier, user: string): Promise<boolean> {\n return this.callAction(IPostServiceCommands.deliverMessage, { ...messageId, user });\n }\n}\n","import { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport { IMoleculerTopics as MoleculerTopics, IPostThread } from '@messenger-box/core';\nimport { IPostThreadService } from '../../interfaces';\nimport { BaseProxyService } from './base-proxy-service';\n\n@injectable()\nexport class PostThreadMicroservice\n extends BaseProxyService<IPostThread, Omit<IPostThread, 'id'>>\n implements IPostThreadService\n{\n topic = MoleculerTopics.PostThreadService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n super(broker, logger);\n this.logger = logger.child({ className: 'PostThreadMicroservice' });\n }\n}\n","import { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport { IMoleculerTopics as MoleculerTopics, IReaction, IReactionInput } from '@messenger-box/core';\nimport { IReactionService, IReactionServiceInput } from '../../interfaces';\nimport { BaseProxyService } from './base-proxy-service';\n\n@injectable()\nexport class ReactionMicroservice\n extends BaseProxyService<IReaction, IReactionServiceInput, Partial<IReactionInput>>\n implements IReactionService\n{\n topic = MoleculerTopics.ReactionService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n super(broker, logger);\n this.logger = logger.child({ className: 'ReactionMicroservice' });\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 deletedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\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 files: [{ type: Schema.Types.ObjectId }],\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 sortBy = isObject(sort) ? { [sort?.key]: sort.value } : DEFAULT_SORTING;\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(sortBy as never)\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/core\");","module.exports = require(\"@adminide-stack/platform-server\");","module.exports = require(\"@common-stack/core\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"@container-stack/file-info-core\");","module.exports = require(\"@messenger-box/core\");","module.exports = require(\"@messenger-box/notification-api-core\");","module.exports = require(\"@skoropletov/moleculer-cron-tasks\");","module.exports = require(\"@vscode-alt/monaco-editor/esm/vs/nls\");","module.exports = require(\"date-fns/compareAsc\");","module.exports = require(\"date-fns/sub\");","module.exports = require(\"envalid\");","module.exports = require(\"graphql\");","module.exports = require(\"inversify\");","module.exports = require(\"lodash\");","module.exports = require(\"moleculer\");","module.exports = require(\"mongoose\");"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/config/config.ts","webpack:///./src/config/index.ts","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/enums/index.ts","webpack:///./src/enums/notification-duration-unit-enum.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/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/extended.graphql","webpack:///./src/graphql/schema/index.ts","webpack:///./src/graphql/schema/mail-templates.graphql","webpack:///./src/graphql/schema/messenger-notification-service.graphql","webpack:///./src/graphql/schema/messenger-preferences.graphql","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/interfaces/index.ts","webpack:///./src/migrations/index.ts","webpack:///./src/migrations/message-notification-template-migration.ts","webpack:///./src/mixins/base-service-mixin.ts","webpack:///./src/mixins/index.ts","webpack:///./src/module.ts","webpack:///./src/plugins/channel-moleculer-service.ts","webpack:///./src/plugins/index.ts","webpack:///./src/plugins/messenger-notification-moleculer-service.ts","webpack:///./src/plugins/post-moleculer-service.ts","webpack:///./src/plugins/post-thread-moleculer-service.ts","webpack:///./src/plugins/reaction-moleculer-service.ts","webpack:///./src/preferences/index.ts","webpack:///./src/preferences/settings/index.ts","webpack:///./src/preferences/settings/post-settings.ts","webpack:///./src/services/base-service.ts","webpack:///./src/services/channel-service.ts","webpack:///./src/services/index.ts","webpack:///./src/services/messenger-notification-service.ts","webpack:///./src/services/post-service.ts","webpack:///./src/services/post-thread-service.ts","webpack:///./src/services/proxy-services/base-proxy-service.ts","webpack:///./src/services/proxy-services/channel-microservice.ts","webpack:///./src/services/proxy-services/index.ts","webpack:///./src/services/proxy-services/messenger-notification-microservice.ts","webpack:///./src/services/proxy-services/post-microservice.ts","webpack:///./src/services/proxy-services/post-thread-microservice.ts","webpack:///./src/services/proxy-services/reaction-microservice.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/core\"","webpack:///external \"@adminide-stack/platform-server\"","webpack:///external \"@common-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@container-stack/file-info-core\"","webpack:///external \"@messenger-box/core\"","webpack:///external \"@messenger-box/notification-api-core\"","webpack:///external \"@skoropletov/moleculer-cron-tasks\"","webpack:///external \"@vscode-alt/monaco-editor/esm/vs/nls\"","webpack:///external \"date-fns/compareAsc\"","webpack:///external \"date-fns/sub\"","webpack:///external \"envalid\"","webpack:///external \"graphql\"","webpack:///external \"inversify\"","webpack:///external \"lodash\"","webpack:///external \"moleculer\"","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","import { cleanEnv, str, num } from 'envalid';\n\nexport const config = cleanEnv(process.env, {\n FILES_TTL: num({ default: 3600, desc: 'TTL for files cache in Seconds' }),\n GRAPHQL_URL: str(),\n MAIL_SEND_DEFAULT_EMAIL: str(),\n APP_NAME: str(),\n});\n","export * from './config';\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 MessengerNotificationService: Symbol('MessengerNotificationService'),\n};\n","import { ContainerModule, interfaces } from 'inversify';\nimport { TaggedType } from '@common-stack/core';\nimport {\n ChannelService,\n PostService,\n PostThreadService,\n ReactionService,\n MessengerNotificationService,\n} from '../services';\nimport { TYPES } from '../constants';\nimport {\n IChannelRepository,\n IChannelService,\n IPostRepository,\n IPostService,\n IPostThreadRepository,\n IPostThreadService,\n IReactionRepository,\n IReactionService,\n IMessengerNotificationService,\n} from '../interfaces';\nimport { ChannelRepository, PostRepository, PostThreadRepository, ReactionRepository } from '../store';\nimport { MessageNotificationTemplateMigration } from '../migrations';\nimport {\n ChannelProxyService,\n PostProxyService,\n PostThreadMicroservice,\n ReactionMicroservice,\n MessengerNotificationMicroservice,\n} from '../services/proxy-services';\n\n/**\n * Local services and exposed microservices to serve remote connections.\n * Operates within in the Gateway.\n *\n * @param settings Settings\n */\nexport const proxyServiceContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind('MongodbMigration')\n .to(MessageNotificationTemplateMigration)\n .whenTargetNamed(MessageNotificationTemplateMigration.name);\n\n bind<IChannelService>(TYPES.ChannelService)\n .to(ChannelProxyService)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\n\n bind<IPostService>(TYPES.PostService)\n .to(PostProxyService)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadMicroservice)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\n\n bind<IReactionService>(TYPES.ReactionService)\n .to(ReactionMicroservice)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\n\n bind<IMessengerNotificationService>(TYPES.MessengerNotificationService)\n .to(MessengerNotificationMicroservice)\n .inSingletonScope()\n .whenTargetNamed(TaggedType.MICROSERVICE);\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 serviceContainerModule: (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 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 bind<IMessengerNotificationService>(TYPES.MessengerNotificationService)\n .to(MessengerNotificationService)\n .inSingletonScope()\n .whenTargetIsDefault();\n });\n","import { interfaces } from 'inversify';\nimport { TaggedType } from '@common-stack/core';\nimport { PubSub } from 'graphql-subscriptions';\nimport {\n IChannelService,\n IMessengerNotificationService,\n IPostService,\n IPostThreadService,\n IReactionService,\n IServices,\n} from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport const contextServicesFromContainer = (container: interfaces.Container): IServices => {\n const services = ({\n pubsub: container.get<PubSub>('PubSub'),\n channelService: container.getNamed<IChannelService>(TYPES.ChannelService, TaggedType.MICROSERVICE),\n postService: container.getNamed<IPostService>(TYPES.PostService, TaggedType.MICROSERVICE),\n postThreadService: container.getNamed<IPostThreadService>(TYPES.PostThreadService, TaggedType.MICROSERVICE),\n reactionService: container.getNamed<IReactionService>(TYPES.ReactionService, TaggedType.MICROSERVICE),\n messengerNotificationService: container.getNamed<IMessengerNotificationService>(\n TYPES.MessengerNotificationService,\n TaggedType.MICROSERVICE,\n ),\n })\n\n console.log({ services });\n\n return services as any;\n};\n","export * from './containers';\nexport * from './context-services-from-container';\n","export { NotificationDurationUnitEnum } from './notification-duration-unit-enum';\n","export enum NotificationDurationUnitEnum {\n days = 'days',\n hours = 'hours',\n minutes = 'minutes',\n}\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 { NotificationDurationUnitEnum } from '../../enums';\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 console.log({ accountId, teamId });\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) as Promise<boolean>;\n },\n viewChannel(src, { id }, { userContext, channelService }) {\n return channelService.viewChannel(id, userContext.accountId);\n },\n async sendNotificationOfUnreadMessages(src, { unit, value }, { messengerNotificationService }) {\n await messengerNotificationService.sendNotificationOfUnreadMessages(\n unit as unknown as NotificationDurationUnitEnum,\n value,\n );\n return true;\n },\n },\n});\n","import { 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 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 { generateUri, IClientCacheTypeNames, IConfigurationModel } from '@adminide-stack/core';\nimport { IFileInfo, IFilesInfo, IResolvers, ISortEnum } from '@messenger-box/core';\nimport { get } from 'lodash';\nimport { GraphQLError } from 'graphql';\nimport { GetAllArgs, IContext } from '../../interfaces';\n\nexport const postResolvers = (): IResolvers<IContext> => ({\n // Temporary fix, until we have extension support in base module\n FileInfo: {\n extension(src) {\n return src.mimeType.split('/')[1];\n },\n },\n Post: {\n editedBy(src, args, { accountService }) {\n return accountService.findAccountById(src.editedBy.toString());\n },\n deletedBy(src, args, { accountService }) {\n return accountService.findAccountById(src?.deletedBy.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 props(src, _, { userContext }) {\n return src?.props?.[`[${userContext.accountId}]`];\n },\n isRead(src, _, { userContext }) {\n return get(src?.props?.[`[${userContext.accountId}]`], `messenger.posts.isRead`);\n },\n isDelivered(src, _, { userContext }) {\n return get(src?.props?.[`[${userContext.accountId}]`], `messenger.posts.isDelivered`);\n },\n propsConfiguration(src, args, { configurationService }) {\n const resource = generateUri('messenger' as any, { _id: src.id }, 'props');\n let data = '{}';\n try {\n data = JSON.stringify(src.props);\n } catch (err) {\n console.log('---Errr---', err);\n }\n const machineModel = configurationService.parser(resource.toString(), data) as IConfigurationModel;\n return {\n resource,\n contents: machineModel.contents,\n overrides: machineModel.overrides,\n keys: machineModel.keys,\n __typename: IClientCacheTypeNames.MachineConfiguration,\n };\n },\n files(src, args: GetAllArgs<IFileInfo>, { fileInfoService }) {\n return fileInfoService.getAllWithCount({\n ...args,\n criteria: {\n ...args.criteria,\n refType: 'Post',\n ref: src.id,\n } as unknown,\n }) as unknown as IFilesInfo;\n },\n },\n Query: {\n async messages(src, { channelId, limit, skip }, { postService, userContext }) {\n const { data, totalCount } = await postService.getAllWithCount({\n criteria: {\n channel: channelId,\n },\n limit,\n skip,\n sort: {\n key: 'createdAt',\n value: ISortEnum.DESC,\n },\n });\n\n return {\n totalCount,\n data,\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 files: messageInput.files,\n } as any);\n },\n async sendMessage(src, { channelId, messageInput }, { postService, userContext, pubsub }) {\n const { content, files } = messageInput;\n const { accountId } = userContext;\n\n const post = await postService.create({\n channel: channelId as any,\n message: content,\n editedBy: accountId as any,\n author: accountId as any,\n files,\n });\n\n pubsub.publish(`POST_CREATED.${channelId}`, post);\n\n return post;\n },\n createMessageFileUploadLink(_, { postId, filename }, { postService, userContext }) {\n return postService.createFileUploadLink(postId, filename, userContext.accountId);\n },\n attachUploadedFileToMessage(_, { postId, file }, { postService, userContext }) {\n return postService.attachUploadedFile(postId, file, userContext.accountId);\n },\n async createMessageFilesUploadLink(_, { postId, filenames }, { postService, userContext }) {\n return postService.createFilesUploadLink(postId, filenames, userContext.accountId);\n },\n async attachUploadedFilesToMessage(_, { postId, files }, { postService, userContext }) {\n return postService.attachUploadedFiles(postId, files, userContext.accountId);\n },\n deleteMessageFile(_, { url }, { postService }) {\n return postService.deleteFile(url);\n },\n async readMessage(src, { messageId }, { postService, userContext, channelService }) {\n const member = await channelService.isMember(messageId.channelId, userContext.accountId);\n if (!member) {\n throw new GraphQLError('Message does not belong to user');\n }\n return postService.readMessage(messageId, userContext.accountId);\n },\n async deliverMessage(src, { messageId }, { postService, userContext, channelService }) {\n const member = await channelService.isMember(messageId.channelId, userContext.accountId);\n if (!member) {\n throw new GraphQLError('Message does not belong to user');\n }\n return postService.deliverMessage(messageId, userContext.accountId);\n },\n // uploadFile(src, { files, postId }, { fileInfoService, userContext }) {\n // const res = [];\n // files.map((file) =>\n // res.push(\n // fileInfoService.create({\n // refType: IFileRefType.Post as never,\n // file,\n // createdBy: userContext.accountId,\n // ref: postId,\n // }),\n // ),\n // );\n // return res;\n // },\n },\n Subscription: {\n chatMessageAdded: {\n // More on pubsub below\n subscribe: (_, { channelId, directTo }, { pubsub }) => pubsub.asyncIterator([`POST_CREATED.${channelId}`]),\n },\n },\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\\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 viewChannel(id:ID!): Boolean! @isAuthenticated @addAccountContext\\n\\n deleteChannel(id: ID!): Boolean @isAuthenticated\\n}\\n\";","export default \"interface IFileRef{\\n id:ID!\\n}\\n\\nextend enum FileRefType{\\n Post\\n}\\n\\nextend enum MoleculerServiceName {\\n MessengerNotificationService\\n}\\n\\n\\nextend enum MoleculerCronServiceName {\\n MessengerCronJob\\n}\\n\";","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport extended from './extended.graphql';\nimport 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';\nimport mailTemplate from './mail-templates.graphql';\nimport messengerPreferences from './messenger-preferences.graphql';\nimport messengerNotificationService from './messenger-notification-service.graphql';\n\nconst schema = [\n extended,\n baseSchema,\n channelSchema,\n channelMember,\n postSchema,\n postThread,\n preferencesSchema,\n usersSchema,\n reactionSchema,\n mailTemplate,\n messengerPreferences,\n messengerNotificationService,\n].join('\\n');\n\nexport { schema };\n","export default \"extend enum MailTemplateId {\\n MessageNotificationServiceId\\n}\\n\";","export default \"enum MessengerNotificationServiceCommands{\\n sendNotificationOfUnreadMessages\\n}\\n\\nextend type Mutation {\\n sendNotificationOfUnreadMessages(unit: String!, value: Int!): Boolean!\\n}\\n\";","export default \"type Preference_Notifications_Settings {\\n email: Boolean\\n sms: Boolean\\n browser: Boolean\\n}\\n\\ntype Preference_Account_Global_Notification{\\n offlineMessages: Preference_Notifications_Settings\\n}\\n\\ntype Preference_Account_Global{\\n notification: Preference_Account_Global_Notification\\n}\\nextend type Preference_Account {\\n global: Preference_Account_Global\\n}\\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 & IFileRef {\\n id: ID!\\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 files(criteria:AnyObject, limit:Int, skip:Int, sort:Sort):FilesInfo!\\n editedBy: UserAccount\\n deletedBy: UserAccount\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n\\n propsConfiguration: MachineConfiguration\\n\\n isRead: Boolean\\n isDelivered: Boolean\\n}\\n\\ninput MessageInput {\\n content: String!\\n userRef: [String] #userId\\n channelRef: [String] #channelId\\n files: [ID!]\\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 @addAccountContext\\n editMessage(messageId: MessageIdentifier!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n sendMessage(channelId: String!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n \\\"\\\"\\\"\\n Attach Post File\\n \\\"\\\"\\\"\\n createMessageFileUploadLink(postId:ID!, filename:String!): String! @isAuthenticated @addAccountContext\\n attachUploadedFileToMessage(postId:ID!, file: UploadedFileInput!): FileInfo! @isAuthenticated @addAccountContext\\n\\n createMessageFilesUploadLink(postId:ID!, filenames:[String!]!): [String!]! @isAuthenticated @addAccountContext\\n attachUploadedFilesToMessage(postId:ID!, files: [UploadedFileInput!]!): [FileInfo!]! @isAuthenticated @addAccountContext\\n \\\"\\\"\\\"\\n Detach Post File\\n \\\"\\\"\\\"\\n deleteMessageFile(url: String!): Boolean! @isAuthenticated @addAccountContext\\n\\n readMessage(messageId: MessageIdentifier!): Boolean! @isAuthenticated @addAccountContext\\n\\n deliverMessage(messageId: MessageIdentifier!): Boolean! @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 \"enum 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}\\n\\nextend type Query{\\n usersToChat(auth0Id:String!):[UserAccount] @isAuthenticated @addAccountContext\\n currentUser(auth0Id:String!):UserAccount @isAuthenticated @addAccountContext\\n}\\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);\nexport { PostTypes } from './preferences';\nexport * from './interfaces';\n","export * from './base-repositories';\nexport * from './get-all-args';\nexport * from './base-service';\nexport * from './channel-model';\nexport * from './channel-member';\nexport * from './notifications';\nexport * from './channel-repository';\nexport * from './channel-service';\nexport * from './post-service';\nexport * from './post-repository';\nexport * from './post-thread-service';\nexport * from './post-thread-repository';\nexport * from './reaction-repository';\nexport * from './reaction-service';\nexport * from './services';\nexport * from './context';\nexport * from './messenger-notification-service-interface';\n","export { MessageNotificationTemplateMigration } from './message-notification-template-migration';\n","import * as Logger from 'bunyan';\nimport { Connection } from 'mongoose';\nimport { IMailServiceAction, IMoleculerServiceName } from '@container-stack/mailing-api';\nimport { IDatabaseMigration, IIResourceUtilizationSettings } from '@adminide-stack/core';\nimport { IMailTemplateId } from '@messenger-box/core';\nimport { injectable, inject, tagged } from 'inversify';\nimport { CommonType, TaggedType } from '@common-stack/core';\nimport { CallingOptions, ServiceBroker } from 'moleculer';\nimport { config } from '../config';\n\n@injectable()\nexport class MessageNotificationTemplateMigration implements IDatabaseMigration {\n constructor(\n @inject('Logger') private logger: Logger,\n @inject('MongoDBConnection') private db: Connection,\n @inject(CommonType.MOLECULER_BROKER)\n protected broker: ServiceBroker,\n @inject('Settings')\n @tagged(TaggedType.MICROSERVICE, true)\n private settings: IIResourceUtilizationSettings,\n ) {\n this.logger = logger.child({ className: MessageNotificationTemplateMigration.name });\n }\n\n get id(): string {\n return 'MessageNotificationTemplate_01022022';\n }\n\n public async up(): Promise<void> {\n await this.down();\n const name = IMailTemplateId.MessageNotificationServiceId;\n const requestData = {\n engine: 'ejs',\n code: name,\n templateId: name,\n description: 'Payment',\n html: '<%= text %>',\n text: '<%= text %>',\n name,\n topic: '<%= subject %>',\n };\n\n return this.callAction(\n IMailServiceAction.saveTemplate,\n { request: requestData },\n IMoleculerServiceName.MailService,\n );\n }\n\n public async down(): Promise<void> {\n if (config.isDev) {\n await this.broker.waitForServices('MailService');\n }\n try {\n const name = IMailTemplateId.MessageNotificationServiceId;\n this.logger.trace(`Trying to down ${name}`);\n const droppedResponse = await this.callAction(\n IMailServiceAction.dropTemplate,\n { name },\n IMoleculerServiceName.MailService,\n );\n if (droppedResponse) {\n this.logger.info(`${name} dropped!`);\n } else {\n this.logger.trace(`${name} doesn't exist. Skipping down`);\n }\n } catch (e) {\n this.logger.error(e.message, e.stack);\n }\n }\n\n private async callAction<T, P = unknown>(command: string, params?: P, topic?: string, opts?: CallingOptions) {\n return this.broker.call<T, P>(`${topic}.${command}@${this.settings.adminApiNamespace}`, params, opts);\n }\n}\n","import { IBaseServiceCommands as BaseServiceCommands } from '@messenger-box/core';\nimport { Context, ServiceSchema } from 'moleculer';\nimport { Document, FilterQuery } from 'mongoose';\nimport { GetAllArgs, IBaseService } from '../interfaces';\n\nexport const BaseServiceMixin = <T, C, U>(service: IBaseService<T, C, U>): Partial<ServiceSchema> => ({\n name: 'BaseServiceMixin',\n actions: {\n [BaseServiceCommands.get]: {\n params: {\n id: 'string',\n },\n handler: async (ctx: Context<{ id: string }>) => service.get(ctx.params.id),\n },\n [BaseServiceCommands.count]: {\n params: {\n criteria: { type: 'object', optional: true },\n },\n handler: async (ctx: Context<{ criteria?: FilterQuery<Document<T>> }>) =>\n service.count(ctx.params.criteria),\n },\n [BaseServiceCommands.bulkCreate]: {\n params: {\n data: { type: 'array', items: 'object' },\n },\n handler: async (ctx: Context<{ data: never[] }>) => service.bulkCreate(ctx.params.data),\n },\n [BaseServiceCommands.create]: {\n params: {\n data: 'object',\n },\n handler: async (ctx: Context<{ data: never }>) => service.create(ctx.params.data),\n },\n [BaseServiceCommands.delete]: {\n params: {\n id: 'string',\n },\n handler: async (ctx: Context<{ id: string | FilterQuery<Document<T>> }>) =>\n service.delete(ctx.params.id as never),\n },\n [BaseServiceCommands.getAll]: {\n params: {\n criteria: 'object|optional',\n sort: 'object|optional',\n skip: 'number|optional',\n limit: 'number|optional',\n selectedFields: 'string|optional',\n },\n handler: async (ctx: Context<GetAllArgs<Document<T>>>) => service.getAll(ctx.params),\n },\n [BaseServiceCommands.getAllWithCount]: {\n params: {\n options: 'object',\n },\n handler: async (ctx: Context<{ options: GetAllArgs<Document<T>> }>) =>\n service.getAllWithCount(ctx.params.options),\n },\n [BaseServiceCommands.insert]: {\n params: {\n data: 'object',\n overwrite: 'boolean|optional',\n },\n handler: async (ctx: Context<{ data: never & { id?: string }; overwrite: boolean }>) =>\n service.insert(ctx.params.data, ctx.params.overwrite),\n },\n [BaseServiceCommands.update]: {\n params: {\n id: 'string',\n data: 'object',\n overwrite: 'boolean|optional',\n },\n handler: async (ctx: Context<{ id: string; data: never; overwrite: boolean }>) =>\n service.update(ctx.params.id, ctx.params.data, ctx.params.overwrite),\n },\n },\n});\n","export { BaseServiceMixin } from './base-service-mixin';\n","import { Feature } from '@common-stack/server-core';\nimport { schema, messengerResolvers } from './graphql';\nimport { serviceContainerModule, proxyServiceContainerModule, contextServicesFromContainer } from './containers';\nimport {\n ChannelMoleculerService,\n MessengerNotificationMoleculerService,\n PostMoleculerService,\n PostThreadMoleculerService,\n ReactionMoleculerService,\n} from './plugins';\n\nexport default new Feature({\n schema,\n addBrokerClientServiceClass: [\n ChannelMoleculerService,\n PostMoleculerService,\n PostThreadMoleculerService,\n ReactionMoleculerService,\n MessengerNotificationMoleculerService,\n ],\n createResolversFunc: messengerResolvers,\n createServiceFunc: contextServicesFromContainer,\n createContainerFunc: [proxyServiceContainerModule],\n createHemeraContainerFunc: [serviceContainerModule],\n addBrokerMainServiceClass: [],\n});\n","import { Context, Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport {\n IChannelServiceCommands as ChannelServiceCommands,\n IMoleculerTopics as MoleculerTopics,\n IUserAccount,\n Maybe,\n Scalars,\n} from '@messenger-box/core';\nimport { IChannelService, ISaveChannelParams, ISaveDirectChannelParams } from '../interfaces';\nimport { config } from '../config';\nimport { TYPES } from '../constants';\nimport { BaseServiceMixin } from '../mixins';\n\nexport class ChannelMoleculerService extends Service {\n private channelService: IChannelService;\n\n constructor(broker: ServiceBroker, { container, ...settings }: { container: Container }) {\n super(broker);\n const topic = MoleculerTopics.ChannelService;\n this.channelService = container.get<IChannelService>(TYPES.ChannelService);\n\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin, BaseServiceMixin(this.channelService)],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {\n [ChannelServiceCommands.addMemberToChannel]: {\n handler: async (ctx: Context<{ channelId: string; memberId: string }>) =>\n this.channelService.addMemberToChannel(ctx.params.channelId, ctx.params.memberId),\n },\n [ChannelServiceCommands.createDirectChannel]: {\n handler: async (\n ctx: Context<{\n data: {\n receiver: Array<Maybe<Scalars['ID']>>;\n sender: string;\n displayName: string;\n };\n }>,\n ) => this.channelService.createDirectChannel(ctx.params.data),\n },\n [ChannelServiceCommands.deleteChannel]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.deleteChannel(ctx.params.id),\n },\n [ChannelServiceCommands.hideChannel]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.hideChannel(ctx.params.id),\n },\n [ChannelServiceCommands.getChannelCounts]: {\n handler: async (ctx: Context<{ teamId: string; userId: string }>) =>\n this.channelService.getChannelCounts(ctx.params.teamId, ctx.params.userId),\n },\n [ChannelServiceCommands.getByName]: {\n handler: async (ctx: Context<{ teamId: string; name: string }>) =>\n this.channelService.getByName(ctx.params.teamId, ctx.params.name),\n },\n [ChannelServiceCommands.getByNameIncludeDeleted]: {\n handler: async (ctx: Context<{ teamId: string; name: string }>) =>\n this.channelService.getByNameIncludeDeleted(ctx.params.teamId, ctx.params.name),\n },\n [ChannelServiceCommands.getByNames]: {\n handler: async (ctx: Context<{ teamId: string; names: string[] }>) =>\n this.channelService.getByNames(ctx.params.teamId, ctx.params.names),\n },\n [ChannelServiceCommands.getChannels]: {\n handler: async (\n ctx: Context<{ teamId: string; userId: string; includeDeleted: boolean; lastDeleteAt: number }>,\n ) =>\n this.channelService.getChannels(\n ctx.params.teamId,\n ctx.params.userId,\n ctx.params.includeDeleted,\n ctx.params.lastDeleteAt,\n ),\n },\n [ChannelServiceCommands.getChannelUnread]: {\n handler: async (ctx: Context<{ channelId: string; userId: string }>) =>\n this.channelService.getChannelUnread(ctx.params.channelId, ctx.params.userId),\n },\n [ChannelServiceCommands.getDeleted]: {\n handler: async (ctx: Context<{ teamId: string; offset: number; limit: number; userId: string }>) =>\n this.channelService.getDeleted(\n ctx.params.teamId,\n ctx.params.offset,\n ctx.params.limit,\n ctx.params.userId,\n ),\n },\n [ChannelServiceCommands.getDeletedByName]: {\n handler: async (ctx: Context<{ teamId: string; name: string }>) =>\n this.channelService.getDeletedByName(ctx.params.teamId, ctx.params.name),\n },\n [ChannelServiceCommands.saveDirectChannel]: {\n handler: async (ctx: Context<{ channel: ISaveDirectChannelParams }>) =>\n this.channelService.saveDirectChannel(ctx.params.channel),\n },\n [ChannelServiceCommands.saveChannel]: {\n handler: async (ctx: Context<{ data: ISaveChannelParams }>) =>\n this.channelService.saveChannel(ctx.params.data),\n },\n [ChannelServiceCommands.invalidateChannelByName]: {\n handler: async (ctx: Context<{ teamId: string; name: string }>) =>\n this.channelService.invalidateChannelByName(ctx.params.teamId, ctx.params.name),\n },\n [ChannelServiceCommands.getPinnedPosts]: {\n handler: async (ctx: Context<{ channelId: string }>) =>\n this.channelService.getPinnedPosts(ctx.params.channelId),\n },\n [ChannelServiceCommands.getFromMaster]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.getFromMaster(ctx.params.id),\n },\n [ChannelServiceCommands.restore]: {\n handler: async (ctx: Context<{ channelId: string; time: Date }>) =>\n this.channelService.restore(ctx.params.channelId, ctx.params.time),\n },\n [ChannelServiceCommands.permanentDeleteByTeam]: {\n handler: async (ctx: Context<{ teamId: string }>) =>\n this.channelService.permanentDeleteByTeam(ctx.params.teamId),\n },\n [ChannelServiceCommands.permanentDelete]: {\n handler: async (ctx: Context<{ channelId: string }>) =>\n this.channelService.permanentDelete(ctx.params.channelId),\n },\n [ChannelServiceCommands.permanentDeleteMembersByChannel]: {\n handler: async (ctx: Context<{ channelId: string }>) =>\n this.channelService.permanentDeleteMembersByChannel(ctx.params.channelId),\n },\n [ChannelServiceCommands.getPrivateChannelsForTeam]: {\n handler: async (ctx: Context<{ teamId: string; offset: number; limit: number }>) =>\n this.channelService.getPrivateChannelsForTeam(\n ctx.params.teamId,\n ctx.params.offset,\n ctx.params.limit,\n ),\n },\n [ChannelServiceCommands.getPublicChannelsForTeam]: {\n handler: async (ctx: Context<{ teamId: string; offset: number; limit: number }>) =>\n this.channelService.getPublicChannelsForTeam(\n ctx.params.teamId,\n ctx.params.offset,\n ctx.params.limit,\n ),\n },\n [ChannelServiceCommands.getPublicChannelsByIdsForTeam]: {\n handler: async (ctx: Context<{ teamId: string; channelsIds: string[] }>) =>\n this.channelService.getPublicChannelsByIdsForTeam(ctx.params.teamId, ctx.params.channelsIds),\n },\n [ChannelServiceCommands.getTeamChannels]: {\n handler: async (ctx: Context<{ teamId: string }>) =>\n this.channelService.getTeamChannels(ctx.params.teamId),\n },\n [ChannelServiceCommands.saveMultipleMembers]: {\n handler: async (ctx: Context<{ members: IUserAccount[] }>) =>\n this.channelService.saveMultipleMembers(ctx.params.members),\n },\n [ChannelServiceCommands.leaveChannel]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.leaveChannel(ctx.params.id),\n },\n [ChannelServiceCommands.deleteChannel]: {\n handler: async (ctx: Context<{ id: string }>) => this.channelService.deleteChannel(ctx.params.id),\n },\n [ChannelServiceCommands.isMember]: {\n params: {\n id: 'string',\n user: 'string',\n },\n handler: async ({ params }: Context<{ id: string; user: string }>) =>\n this.channelService.isMember(params.id, params.user),\n },\n [ChannelServiceCommands.viewChannel]: {\n params: {\n id: 'string',\n user: 'string',\n },\n handler: async ({ params }: Context<{ id: string; user: string }>) =>\n this.channelService.viewChannel(params.id, params.user),\n },\n },\n });\n }\n}\n","export * from './channel-moleculer-service';\nexport * from './post-moleculer-service';\nexport * from './post-thread-moleculer-service';\nexport * from './reaction-moleculer-service';\nexport { MessengerNotificationMoleculerService } from './messenger-notification-moleculer-service';\n","import { Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport {\n IMessengerNotificationServiceCommands,\n IMoleculerCronServiceName,\n IMoleculerServiceName,\n} from '@messenger-box/core';\nimport CronTasks from '@skoropletov/moleculer-cron-tasks';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { CommonType } from '@common-stack/core';\nimport { ClientTypes } from '@common-stack/client-core';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport { config } from '../config';\nimport { IMessengerNotificationService } from '../interfaces';\nimport { NotificationDurationUnitEnum } from '../enums';\nimport { TYPES } from '../constants';\n\nexport class MessengerNotificationMoleculerService extends Service {\n private messengerService: IMessengerNotificationService;\n\n private cdmLogger: typeof Logger;\n\n private readonly container: Container;\n\n constructor(broker: ServiceBroker, { container }: { container: Container } & { settings: any }) {\n super(broker);\n this.container = container;\n this.parseServiceSchema({\n name: IMoleculerServiceName.MessengerNotificationService,\n dependencies: [],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n mixins: [ApolloClientMixin],\n async started() {\n this.messengerService = this.container.get(TYPES.MessengerNotificationService);\n this.cdmLogger = this.container.get(CommonType.LOGGER);\n this.registerCronService(this.messengerService);\n },\n actions: {\n [IMessengerNotificationServiceCommands.sendNotificationOfUnreadMessages]: {\n params: {\n unit: 'string',\n value: 'number',\n },\n handler({ params }) {\n const { unit, value } = params;\n return this.messengerService.sendNotificationOfUnreadMessages(unit, value);\n },\n },\n },\n });\n }\n\n registerCronService(service: IMessengerNotificationService): void {\n this.broker.createService({\n name: IMoleculerCronServiceName.MessengerCronJob,\n mixins: [CronTasks],\n tasks: [\n {\n name: `${IMessengerNotificationServiceCommands.sendNotificationOfUnreadMessages}`,\n cronTime: '0 * * * *',\n async callback() {\n return service.sendNotificationOfUnreadMessages(NotificationDurationUnitEnum.hours, 1);\n },\n },\n ],\n });\n }\n}\n","import { Service, ServiceBroker } from 'moleculer';\nimport { IMoleculerTopics as MoleculerTopics, IPost } from '@messenger-box/core';\nimport { Container } from 'inversify';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport { config } from '../config';\nimport { TYPES } from '../constants';\nimport { BaseServiceMixin } from '../mixins';\nimport { IPostService, IPostServiceInput } from '../interfaces';\n\nexport class PostMoleculerService extends Service {\n private readonly postService: IPostService;\n\n constructor(broker: ServiceBroker, { container }: { container: Container }) {\n super(broker);\n const topic = MoleculerTopics.PostService;\n this.postService = container.get<IPostService>(TYPES.PostService);\n\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin, BaseServiceMixin<IPost, IPostServiceInput, Partial<IPost>>(this.postService)],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {\n attachUploadedFile: {\n params: {\n postId: 'string',\n createdBy: 'string',\n file: 'object',\n },\n handler(ctx) {\n const { postId, createdBy, file } = ctx.params;\n return this.postService.attachUploadedFile(postId, file, createdBy);\n },\n },\n createFileUploadLink: {\n params: {\n postId: 'string',\n filename: 'string',\n userId: 'string',\n },\n handler(ctx) {\n const { postId, filename, userId } = ctx.params;\n return this.postService.createFileUploadLink(postId, filename, userId);\n },\n },\n attachUploadedFiles: {\n params: {\n postId: 'string',\n createdBy: 'string',\n files: {\n type: 'array',\n items: 'object',\n },\n },\n handler(ctx) {\n const { postId, createdBy, files } = ctx.params;\n return this.postService.attachUploadedFiles(postId, files, createdBy);\n },\n },\n createFilesUploadLink: {\n params: {\n postId: 'string',\n filenames: {\n type: 'array',\n items: 'string',\n },\n userId: 'string',\n },\n handler(ctx) {\n const { postId, filenames, userId } = ctx.params;\n return this.postService.createFilesUploadLink(postId, filenames, userId);\n },\n },\n deleteFile: {\n params: {\n url: 'string',\n },\n handler(ctx) {\n const { url } = ctx.params;\n return this.postService.deleteFile(url);\n },\n },\n readMessage: {\n params: {\n channelId: 'string',\n messageId: 'string',\n user: 'string',\n },\n handler(ctx) {\n const { user, ...rest } = ctx.params;\n return this.postService.readMessage(rest, user);\n },\n },\n deliverMessage: {\n params: {\n channelId: 'string',\n messageId: 'string',\n user: 'string',\n },\n handler(ctx) {\n const { user, ...rest } = ctx.params;\n return this.postService.deliverMessage(rest, user);\n },\n },\n },\n });\n }\n}\n","import { Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { IMoleculerTopics as MoleculerTopics } from '@messenger-box/core';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport { TYPES } from '../constants';\nimport { IPostThreadService } from '../interfaces';\nimport { BaseServiceMixin } from '../mixins';\nimport { config } from '../config';\n\nexport class PostThreadMoleculerService extends Service {\n private readonly postThreadService: IPostThreadService;\n\n constructor(broker: ServiceBroker, { container, ...settings }: { container: Container }) {\n super(broker);\n const topic = MoleculerTopics.PostThreadService;\n this.postThreadService = container.get<IPostThreadService>(TYPES.PostThreadService);\n\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin, BaseServiceMixin(this.postThreadService)],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {},\n });\n }\n}\n","import { Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { IMoleculerTopics as MoleculerTopics } from '@messenger-box/core';\nimport { ApolloClientMixin } from '@adminide-stack/platform-server';\nimport { TYPES } from '../constants';\nimport { IReactionService } from '../interfaces';\nimport { BaseServiceMixin } from '../mixins';\nimport { config } from '../config';\n\nexport class ReactionMoleculerService extends Service {\n private readonly reactionService: IReactionService;\n\n constructor(broker: ServiceBroker, { container }: { container: Container }) {\n super(broker);\n const topic = MoleculerTopics.ReactionService;\n this.reactionService = container.get<IReactionService>(TYPES.ReactionService);\n\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin, BaseServiceMixin(this.reactionService)],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {},\n });\n }\n}\n","export * from './settings';\n","export * from './post-settings';\n","import { ConfigurationScope, IConfigurationPropertySchema } from '@adminide-stack/core';\nimport { localize } from '@vscode-alt/monaco-editor/esm/vs/nls';\n\nexport const POST_SETTINGS_PREFIX = 'messenger.posts';\n\nexport const PostTypes = {\n isPinned: `${POST_SETTINGS_PREFIX}.isPinned`,\n isDelivered: `${POST_SETTINGS_PREFIX}.isDelivered`,\n isRead: `${POST_SETTINGS_PREFIX}.isRead`,\n fromBot: `${POST_SETTINGS_PREFIX}.fromBot`,\n disableGroupHighLight: `${POST_SETTINGS_PREFIX}.disableGroupHighLight`,\n deletedBy: `${POST_SETTINGS_PREFIX}.deletedBy`,\n};\n\nexport const PostSettings: { [path: string]: IConfigurationPropertySchema } = {\n [PostTypes.isPinned]: {\n type: 'boolean',\n default: false,\n description: localize(PostTypes.isPinned, 'Message is Pinned'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.isDelivered]: {\n type: 'boolean',\n default: [],\n description: localize(PostTypes.isDelivered, 'Message is Delivered'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.disableGroupHighLight]: {\n type: 'boolean',\n default: [],\n description: localize(PostTypes.isDelivered, 'Disable Group Highlight'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.isRead]: {\n type: 'boolean',\n default: [],\n description: localize(PostTypes.isRead, 'Message has been read'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.fromBot]: {\n type: 'boolean',\n default: [],\n description: localize(PostTypes.isRead, 'Message from bot'),\n scope: ConfigurationScope.MACHINE,\n },\n [PostTypes.deletedBy]: {\n type: 'string',\n default: [],\n description: localize(PostTypes.isRead, 'Deleted by user'),\n scope: ConfigurationScope.MACHINE,\n },\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, IUserAccount } from '@messenger-box/core';\nimport { BaseService } from './base-service';\nimport { DEFAULT_NOTIFY_PROPS, TYPES } from '../constants';\nimport {\n IChannelRepository,\n IChannelService,\n ICreateDirectChannelParams,\n INotificationProps,\n IPostService,\n ISaveChannelParams,\n ISaveDirectChannelParams,\n} from '../interfaces';\n\nexport class ChannelService extends BaseService<IChannel, Omit<IChannel, 'id'>> implements IChannelService {\n constructor(\n @inject(TYPES.ChannelRepository)\n readonly repository: IChannelRepository,\n @inject(TYPES.PostService)\n private readonly postService: IPostService,\n ) {\n super(repository);\n }\n\n async isMember(channelId: string, user: string): Promise<boolean> {\n const channel = await this.get(channelId);\n return !!channel?.members?.find((member) => member.user.toString() === user.toString());\n }\n\n private static getDmNameFromIds(senderId: string, receiverId: string) {\n return `${senderId}__${receiverId}`;\n }\n\n get defaultNotifyProps(): INotificationProps {\n // #Todo: To be moved to settings\n return DEFAULT_NOTIFY_PROPS;\n }\n\n private static 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): Promise<number> {\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: this.defaultNotifyProps,\n },\n ];\n receiver.forEach((re) => {\n chlMember.push({\n user: re,\n schemeAdmin: false,\n notifyProps: this.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: this.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 ChannelService.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: this.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 getDeleted(teamId: string, offset: number, limit: number, userId: string): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getDeletedByName(teamId: string, name: string): Promise<IChannel | Error> {\n return Promise.resolve(undefined);\n }\n\n getFromMaster(id: string): Promise<IChannel | Error> {\n return Promise.resolve(undefined);\n }\n\n getMoreChannels(teamId: string, userId: string, offset: number, limit: number): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getPrivateChannelsForTeam(teamId: string, offset: number, limit: number): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getPublicChannelsByIdsForTeam(teamId: string, channelsIds: string[]): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getPublicChannelsForTeam(teamId: string, offset: number, limit: number): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n getTeamChannels(teamId: string): Promise<IChannel[] | Error> {\n return Promise.resolve(undefined);\n }\n\n hideChannel(id: string): Promise<boolean> {\n return Promise.resolve(false);\n }\n\n invalidateChannelByName(teamId: string, name: string): Promise<void> {\n return Promise.resolve();\n }\n\n leaveChannel(id: string): Promise<boolean> {\n return Promise.resolve(false);\n }\n\n async viewChannel(id: string, user: string): Promise<boolean> {\n // Accessing private property\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n await this.repository.model.updateOne(\n { _id: id },\n {\n 'members.$[elem].lastViewedAt': new Date(),\n },\n {\n arrayFilters: [{ 'elem.user': user }],\n },\n );\n return true;\n }\n\n permanentDelete(channelId: string): void | Error {\n return undefined;\n }\n\n permanentDeleteByTeam(teamId: string): void | Error {\n return undefined;\n }\n\n permanentDeleteMembersByChannel(channelId: string): void | Error {\n return undefined;\n }\n\n saveMultipleMembers(members: IUserAccount[]): Promise<IUserAccount[] | Error> {\n return Promise.resolve(undefined);\n }\n}\n","export * from './channel-service';\nexport * from './post-service';\nexport * from './post-thread-service';\nexport * from './reaction-service';\nexport * from './base-service';\nexport * from './messenger-notification-service';\n","import { omit } from 'lodash';\nimport sub from 'date-fns/sub';\nimport compareAsc from 'date-fns/compareAsc';\nimport { IMailServiceAction, IMoleculerServiceName as IMailMoleculerServiceName } from '@container-stack/mailing-api';\nimport {\n IMoleculerServiceName as INotificationMoleculerServiceName,\n ISmsServiceActions,\n} from '@messenger-box/notification-api-core';\nimport { ServiceBroker } from 'moleculer';\nimport { inject, injectable } from 'inversify';\nimport { IChannel, IMailTemplateId, IPost, IPreference_Account as IPreferenceAccount } from '@messenger-box/core';\nimport { IAccountServiceAction, IMoleculerServiceName, IUserAccount } from '@adminide-stack/core';\nimport { CommonType } from '@common-stack/core';\nimport * as Logger from 'bunyan';\nimport { TYPES } from '../constants';\nimport { IChannelRepository, IMessengerNotificationService, IPostRepository } from '../interfaces';\nimport { NotificationDurationUnitEnum } from '../enums';\nimport { config } from '../config';\n\nexport interface IChannelWithPost extends IChannel {\n post: IPost;\n}\n\nexport interface IMemberWithAllChannels {\n [key: string]: IChannelWithPost[];\n}\n\n@injectable()\nexport class MessengerNotificationService implements IMessengerNotificationService {\n users: Record<string, IUserAccount> = {};\n\n userPreferences: Record<string, IPreferenceAccount> = {};\n\n constructor(\n @inject(TYPES.ChannelRepository)\n private readonly channelRepository: IChannelRepository,\n @inject(TYPES.PostRepository)\n private readonly postRepository: IPostRepository,\n @inject(CommonType.MOLECULER_BROKER)\n private readonly broker: ServiceBroker,\n @inject('Logger')\n private readonly logger: Logger,\n ) {}\n\n private async getLatestMessageInAllChannels(\n unit: NotificationDurationUnitEnum,\n value: number,\n ): Promise<IChannelWithPost[]> {\n const today = new Date();\n const lastDay = sub(today, { [unit]: value });\n const channels = await (this.channelRepository as any).model.aggregate([\n {\n $match: {\n lastPostAt: { $gte: lastDay, $lte: today },\n },\n },\n {\n $project: {\n _id: true,\n lastPostAt: true,\n creator: true,\n members: {\n $filter: {\n input: '$members',\n as: 'item',\n cond: {\n $and: [\n {\n $lte: ['$$item.lastViewedAt', '$lastPostAt'],\n },\n ],\n },\n },\n },\n },\n },\n ]);\n const posts = await this.postRepository.getAll({\n criteria: {\n channel: { $in: channels.map(({ _id }) => _id) },\n createdAt: { $in: channels.map(({ lastPostAt }) => lastPostAt) },\n },\n });\n\n return channels.map((channel) => ({\n ...channel,\n // eslint-disable-next-line no-underscore-dangle\n post: posts.find((post) => post.channel.toString() === channel._id.toString()),\n }));\n }\n\n private groupByMember(channels: IChannelWithPost[]): IMemberWithAllChannels {\n return channels.reduce((acc, curr) => {\n const members = this.findMembersWithUnreadMessage(curr);\n const channelWithoutMembers = omit(curr, ['members']);\n return members.reduce(\n (memberAcc, memberCurr) => ({\n ...acc,\n [memberCurr.user]: Array.isArray(memberAcc[memberCurr.user])\n ? [...memberAcc[memberCurr.user], channelWithoutMembers]\n : [channelWithoutMembers],\n }),\n acc,\n );\n }, {});\n }\n\n private findMembersWithUnreadMessage(channelMessage: IChannelWithPost): IChannel['members'] {\n return channelMessage.members.filter(\n ({ lastViewedAt }) => compareAsc(channelMessage.lastPostAt, lastViewedAt),\n [],\n );\n }\n\n private async sendMail(user: string, channels: IChannelWithPost[]): Promise<void> {\n this.logger.debug('Outgoing request to SendMail', { user: this.users[user], channels });\n const { notificationEmail, email, username } = this.users[user];\n await this.broker.call(`${IMailMoleculerServiceName.MailService}.${IMailServiceAction.send}`, {\n request: {\n topic: 'Unread Messages Notification',\n to: notificationEmail || email,\n templateId: IMailTemplateId.MessageNotificationServiceId,\n from: config.MAIL_SEND_DEFAULT_EMAIL,\n subject: `You have Unread Messages in ${channels.length} chats`,\n variables: {\n text: `Hey ${username},\\nYou have Unread Messages in ${channels.length} chats`,\n user,\n channel: channels,\n },\n },\n });\n }\n\n private async sendText(user: string, channels: IChannelWithPost[]): Promise<void> {\n this.logger.debug('Outgoing request to SendSMS', { user: this.users[user], channels });\n // #Todo Get User Full Name and Phone Number\n const { username, phoneNumber } = this.users[user];\n const [number] = phoneNumber;\n if (!number) {\n this.logger.debug('Outgoing request to SendSMS Skipped, reason No phoneNumber found', {\n user: this.users[user],\n channels,\n });\n }\n await this.broker.call(`${INotificationMoleculerServiceName.SmsService}.${ISmsServiceActions.send}`, {\n to: number,\n body: `Hey ${username},\\nYou have Unread Messages in ${channels.length} chats`,\n });\n }\n\n private async sendPushNotifications(user: string, channels: IChannelWithPost[]): Promise<void> {\n // #Todo Dispatch Push notification once support is added\n this.logger.debug('Outgoing request to SendPushNotification', { user: this.users[user], channels });\n return Promise.resolve();\n }\n\n private getGlobalNotificationSettings(user: string): Promise<IPreferenceAccount> {\n // #Todo fetch from preferences\n return Promise.resolve({\n global: {\n notification: {\n offlineMessages: {\n sms: true,\n email: true,\n browser: true,\n },\n },\n },\n });\n }\n\n private async getUser(id: string): Promise<IUserAccount> {\n return this.broker.call<IUserAccount, { id: string }>(\n `${IMoleculerServiceName.AccountUser}.${IAccountServiceAction.findAccountById}`,\n {\n id,\n },\n );\n }\n\n private async fetchUsersForMembers(users: string[]) {\n return Promise.all(\n users\n .filter((user) => !Object.keys(this.users).includes(user))\n .map(async (user) => {\n this.users[user] = await this.getUser(user);\n this.userPreferences[user] = await this.getGlobalNotificationSettings(user);\n }),\n );\n }\n\n private async sendNotificationToUser([user, channels]: [string, IChannelWithPost[]]): Promise<void> {\n await this.fetchUsersForMembers([user, ...channels.map(({ post }) => post.editedBy.toString())]);\n const { email, sms, browser } = this.userPreferences[user]?.global?.notification?.offlineMessages || {};\n const filteredChannels = channels.filter(({ post }) => user !== post.editedBy.toString());\n if (filteredChannels?.length === 0) {\n return;\n }\n if (email) {\n await this.sendMail(user, filteredChannels);\n }\n if (sms) {\n await this.sendText(user, filteredChannels);\n }\n if (browser) {\n await this.sendPushNotifications(user, filteredChannels);\n }\n }\n\n async sendNotificationOfUnreadMessages(unit: NotificationDurationUnitEnum, value: number): Promise<void> {\n const channels = await this.getLatestMessageInAllChannels(unit, value);\n const membersWithUnreadMessagesInChannels = this.groupByMember(channels);\n await Promise.all(\n Object.entries(membersWithUnreadMessagesInChannels).map(this.sendNotificationToUser.bind(this)),\n );\n }\n}\n","/* eslint-disable no-useless-constructor */\nimport { inject } from 'inversify';\nimport { set } from 'lodash';\nimport { IFileInfo, IFileRefType, IMessageIdentifier, IPost, IUploadedFileInput } from '@messenger-box/core';\nimport { IFileInfoService, TYPES as FileUploadTypes } from '@container-stack/file-info-core';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { ChannelRepository, PostRepository } from '../store';\nimport { IPostService, IPostServiceInput } from '../interfaces';\nimport { PostTypes } from '../preferences';\n\nexport class PostService extends BaseService<IPost, IPostServiceInput, Partial<IPost>> implements IPostService {\n constructor(\n @inject(TYPES.PostRepository)\n repository: PostRepository,\n @inject(TYPES.ChannelRepository)\n private readonly channelRepo: ChannelRepository,\n @inject(FileUploadTypes.FileInfoService)\n private readonly fileInfoService: IFileInfoService,\n ) {\n super(repository);\n }\n\n createFileUploadLink(postId: string, filename: string, userId: string): Promise<string> {\n return this.fileInfoService.uploadByUrl({\n filename,\n refType: IFileRefType.Post as never,\n ref: postId,\n userId,\n });\n }\n\n async attachUploadedFile(postId: string, file: IUploadedFileInput, createdBy: string): Promise<IFileInfo> {\n const { id } = await this.fileInfoService.createUploadedFile({\n ...file,\n refType: IFileRefType.Post as never,\n ref: postId,\n createdBy,\n });\n const fileResponse = await this.fileInfoService.get(id);\n return {\n ...fileResponse,\n url: this.fileInfoService.getDefaultImage(fileResponse.url),\n };\n }\n\n createFilesUploadLink(postId: string, filenames: string[], userId: string): Promise<string[]> {\n return Promise.all(\n filenames.map((filename) =>\n this.fileInfoService.uploadByUrl({\n filename,\n refType: IFileRefType.Post as never,\n ref: postId,\n userId,\n }),\n ),\n );\n }\n\n attachUploadedFiles(postId: string, files: IUploadedFileInput[], createdBy: string): Promise<IFileInfo[]> {\n return Promise.all(\n files.map(async (file) => {\n const { id } = await this.fileInfoService.createUploadedFile({\n ...file,\n refType: IFileRefType.Post as never,\n ref: postId,\n createdBy,\n });\n const fileResponse = await this.fileInfoService.get(id);\n return {\n ...fileResponse,\n url: this.fileInfoService.getDefaultImage(fileResponse.url),\n };\n }),\n );\n }\n\n async create(data: IPostServiceInput): Promise<IPost> {\n const post = await super.create(data);\n const { channel } = data;\n // Accessing private property\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n await this.channelRepo.model.updateOne(\n { _id: channel },\n {\n lastPostAt: post.createdAt,\n $inc: {\n totalMsgCount: 1,\n totalMsgCountRoot: 1,\n 'members.$[elem].msgCountRoot': 1,\n 'members.$[elem].msgCount': 1,\n },\n },\n {\n arrayFilters: [{ 'elem.user': data.author }],\n },\n );\n return post;\n }\n\n deleteFile(url: string): Promise<boolean> {\n return this.fileInfoService.deleteByUrl(url);\n }\n\n async readMessage(messageId: IMessageIdentifier, user: string): Promise<boolean> {\n await this.update(messageId.messageId, {\n props: {\n [`[${user}]`]: set({}, PostTypes.isRead, true),\n },\n });\n return true;\n }\n\n async deliverMessage(messageId: IMessageIdentifier, user: string): Promise<boolean> {\n await this.update(messageId.messageId, {\n props: {\n [`[${user}]`]: set({}, PostTypes.isDelivered, true),\n },\n });\n return true;\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 { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport { FilterQuery } from 'mongoose';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport { IBaseServiceCommands as BaseServiceCommands, IMoleculerTopics as MoleculerTopics } from '@messenger-box/core';\nimport { GetAllArgs, IBaseService } from '../../interfaces';\n\ntype MethodsNames<T, C, U> = keyof IBaseService<T, C, U>;\ntype MethodResponse<T, C, U, M extends MethodsNames<T, C, U>> = ReturnType<IBaseService<T, C, U>[M]>;\n\n@injectable()\nexport class BaseProxyService<T, C = T, U = T> implements IBaseService<T, C, U> {\n protected logger: Logger;\n\n protected topic = MoleculerTopics.BaseService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n private readonly broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n this.logger = logger.child({ className: 'BaseProxyService' });\n }\n\n bulkCreate(data: C[]): MethodResponse<T, C, U, 'bulkCreate'> {\n return this.callAction<T[], { data: C[] }>(BaseServiceCommands.bulkCreate, { data });\n }\n\n count(criteria?: FilterQuery<Document>): MethodResponse<T, C, U, 'count'> {\n return this.callAction(BaseServiceCommands.count, { criteria });\n }\n\n create(data: C): MethodResponse<T, C, U, 'create'> {\n return this.callAction(BaseServiceCommands.create, { data });\n }\n\n delete(id: string | FilterQuery<Document>): MethodResponse<T, C, U, 'delete'> {\n return this.callAction(BaseServiceCommands.delete, { id });\n }\n\n get(id?: string | FilterQuery<Document>): MethodResponse<T, C, U, 'get'> {\n return this.callAction(BaseServiceCommands.get, { id });\n }\n\n getAll(options?: GetAllArgs<Document>): MethodResponse<T, C, U, 'getAll'> {\n return this.callAction(BaseServiceCommands.getAll, { options });\n }\n\n getAllWithCount(options: GetAllArgs<Document>): MethodResponse<T, C, U, 'getAllWithCount'> {\n return this.callAction(BaseServiceCommands.getAllWithCount, { options });\n }\n\n insert(data: C | U, overwrite?: boolean): MethodResponse<T, C, U, 'insert'> {\n return this.callAction(BaseServiceCommands.insert, { data, overwrite });\n }\n\n update(id: string, data: U, overwrite?: boolean): MethodResponse<T, C, U, 'update'> {\n return this.callAction<T>(BaseServiceCommands.update, { id, data, overwrite });\n }\n\n protected async callAction<T, P = unknown>(command: string, params?: P): Promise<T> {\n return this.broker.call<T, P>(`${this.topic}.${command}`, params);\n }\n}\n","import { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport {\n IChannel,\n IChannelServiceCommands as ChannelServiceCommands,\n IMoleculerTopics as MoleculerTopics,\n IUserAccount,\n Maybe,\n Scalars,\n} from '@messenger-box/core';\nimport { IChannelService, ISaveChannelParams, ISaveDirectChannelParams } from '../../interfaces';\nimport { BaseProxyService } from './base-proxy-service';\n\ntype MethodsNames = keyof IChannelService;\ntype MethodResponse<T extends MethodsNames> = ReturnType<IChannelService[T]>;\n\n@injectable()\nexport class ChannelProxyService extends BaseProxyService<IChannel, Omit<IChannel, 'id'>> implements IChannelService {\n topic = MoleculerTopics.ChannelService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n super(broker, logger);\n this.logger = logger.child({ className: 'ChannelProxyService' });\n }\n\n addMemberToChannel(channelId: string, memberId: string): MethodResponse<'addMemberToChannel'> {\n return this.callAction(ChannelServiceCommands.addMemberToChannel, { channelId, memberId });\n }\n\n createDirectChannel(data: {\n receiver: Array<Maybe<Scalars['ID']>>;\n sender: string;\n displayName: string;\n }): MethodResponse<'createDirectChannel'> {\n return this.callAction(ChannelServiceCommands.createDirectChannel, { data });\n }\n\n deleteChannel(id: string): MethodResponse<'deleteChannel'> {\n return this.callAction(ChannelServiceCommands.deleteChannel, { id });\n }\n\n getByName(teamId: string, name: string): MethodResponse<'getByName'> {\n return this.callAction(ChannelServiceCommands.getByName, { teamId, name });\n }\n\n getByNameIncludeDeleted(teamId: string, name: string): MethodResponse<'getByNameIncludeDeleted'> {\n return this.callAction(ChannelServiceCommands.getByNameIncludeDeleted, { teamId, name });\n }\n\n getByNames(teamId: string, names: string[]): MethodResponse<'getByNames'> {\n return this.callAction(ChannelServiceCommands.getByNames, { teamId, names });\n }\n\n getChannelCounts(teamId: string, userId: string): MethodResponse<'getChannelCounts'> {\n return this.callAction(ChannelServiceCommands.getChannelCounts, { teamId, userId });\n }\n\n getChannelUnread(channelId: string, userId: string): MethodResponse<'getChannelUnread'> {\n return this.callAction(ChannelServiceCommands.getChannelUnread, { channelId, userId });\n }\n\n getChannels(\n teamId: string,\n userId: string,\n includeDeleted: boolean,\n lastDeleteAt: number,\n ): MethodResponse<'getChannels'> {\n return this.callAction(ChannelServiceCommands.getChannels, { teamId, userId, includeDeleted, lastDeleteAt });\n }\n\n getDeleted(teamId: string, offset: number, limit: number, userId: string): MethodResponse<'getDeleted'> {\n return this.callAction(ChannelServiceCommands.getDeleted, { teamId, offset, limit, userId });\n }\n\n getDeletedByName(teamId: string, name: string): MethodResponse<'getDeletedByName'> {\n return this.callAction(ChannelServiceCommands.getDeletedByName, { teamId, name });\n }\n\n getFromMaster(id: string): MethodResponse<'getFromMaster'> {\n return this.callAction(ChannelServiceCommands.getFromMaster, { id });\n }\n\n getMoreChannels(teamId: string, userId: string, offset: number, limit: number): MethodResponse<'getMoreChannels'> {\n return this.callAction(ChannelServiceCommands.getMoreChannels, { teamId, userId, offset, limit });\n }\n\n getPinnedPosts(channelId: string): MethodResponse<'getPinnedPosts'> {\n return this.callAction(ChannelServiceCommands.getPinnedPosts, { channelId });\n }\n\n getPrivateChannelsForTeam(\n teamId: string,\n offset: number,\n limit: number,\n ): MethodResponse<'getPrivateChannelsForTeam'> {\n return this.callAction(ChannelServiceCommands.getPrivateChannelsForTeam, { teamId, offset, limit });\n }\n\n getPublicChannelsByIdsForTeam(\n teamId: string,\n channelsIds: string[],\n ): MethodResponse<'getPublicChannelsByIdsForTeam'> {\n return this.callAction(ChannelServiceCommands.getPublicChannelsByIdsForTeam, { teamId, channelsIds });\n }\n\n getPublicChannelsForTeam(\n teamId: string,\n offset: number,\n limit: number,\n ): MethodResponse<'getPublicChannelsForTeam'> {\n return this.callAction(ChannelServiceCommands.getPublicChannelsForTeam, { teamId, offset, limit });\n }\n\n getTeamChannels(teamId: string): MethodResponse<'getTeamChannels'> {\n return this.callAction(ChannelServiceCommands.getTeamChannels, { teamId });\n }\n\n hideChannel(id: string): MethodResponse<'hideChannel'> {\n return this.callAction(ChannelServiceCommands.hideChannel, { id });\n }\n\n invalidateChannelByName(teamId: string, name: string): MethodResponse<'invalidateChannelByName'> {\n return this.callAction(ChannelServiceCommands.invalidateChannelByName, { teamId, name });\n }\n\n leaveChannel(id: string): MethodResponse<'leaveChannel'> {\n return this.callAction(ChannelServiceCommands.leaveChannel, { id });\n }\n\n permanentDelete(channelId: string): MethodResponse<'permanentDelete'> {\n this.callAction(ChannelServiceCommands.permanentDelete, { channelId });\n }\n\n permanentDeleteByTeam(teamId: string): MethodResponse<'permanentDeleteByTeam'> {\n this.callAction(ChannelServiceCommands.permanentDeleteByTeam, { teamId });\n }\n\n permanentDeleteMembersByChannel(channelId: string): MethodResponse<'permanentDeleteMembersByChannel'> {\n this.callAction(ChannelServiceCommands.permanentDeleteMembersByChannel, { channelId });\n }\n\n restore(channelId: string, time: Date): MethodResponse<'restore'> {\n return this.callAction(ChannelServiceCommands.restore, { channelId, time });\n }\n\n saveChannel(data: ISaveChannelParams): MethodResponse<'saveChannel'> {\n return this.callAction(ChannelServiceCommands.saveChannel, { data });\n }\n\n saveDirectChannel(channel: ISaveDirectChannelParams): MethodResponse<'saveDirectChannel'> {\n return this.callAction(ChannelServiceCommands.saveDirectChannel, { channel });\n }\n\n saveMultipleMembers(members: IUserAccount[]): MethodResponse<'saveMultipleMembers'> {\n return this.callAction(ChannelServiceCommands.saveMultipleMembers, { members });\n }\n\n isMember(channelId: string, user: string): Promise<boolean> {\n return this.callAction(ChannelServiceCommands.isMember, { id: channelId, user });\n }\n\n viewChannel(id: string, user: string): Promise<boolean> {\n return this.callAction(ChannelServiceCommands.viewChannel, { id, user });\n }\n}\n","export * from './channel-microservice';\nexport * from './post-thread-microservice';\nexport * from './post-microservice';\nexport * from './reaction-microservice';\nexport * from './messenger-notification-microservice';\n","import { inject, injectable } from 'inversify';\nimport { CommonType } from '@common-stack/core';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { IMessengerNotificationServiceCommands, IMoleculerTopics } from '@messenger-box/core';\nimport { IMessengerNotificationService } from '../../interfaces';\nimport { NotificationDurationUnitEnum } from '../../enums';\n\n@injectable()\nexport class MessengerNotificationMicroservice implements IMessengerNotificationService {\n topic = IMoleculerTopics.MessengerNotificationService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n private readonly broker: ServiceBroker,\n @inject('Logger')\n private readonly logger: Logger,\n ) {\n this.logger = logger.child({ className: 'MessengerNotificationMicroservice' });\n }\n\n protected async callAction<T, P = unknown>(command: string, params?: P): Promise<T> {\n return this.broker.call<T, P>(`${this.topic}.${command}`, params);\n }\n\n sendNotificationOfUnreadMessages(unit: NotificationDurationUnitEnum, value: number): Promise<void> {\n return this.callAction(IMessengerNotificationServiceCommands.sendNotificationOfUnreadMessages, {\n unit,\n value,\n });\n }\n}\n","import { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport {\n IMoleculerTopics as MoleculerTopics,\n IPost,\n IPostServiceCommands,\n IUploadedFileInput,\n IFileInfo,\n IMessageIdentifier,\n} from '@messenger-box/core';\nimport { IPostService, IPostServiceInput } from '../../interfaces';\nimport { BaseProxyService } from './base-proxy-service';\n\n@injectable()\nexport class PostProxyService\n extends BaseProxyService<IPost, IPostServiceInput, Partial<IPost>>\n implements IPostService\n{\n topic = MoleculerTopics.PostService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n super(broker, logger);\n this.logger = logger.child({ className: 'PostProxyService' });\n }\n\n attachUploadedFile(postId: string, file: IUploadedFileInput, createdBy: string): Promise<IFileInfo> {\n return this.callAction(IPostServiceCommands.attachUploadedFile, { file, createdBy, postId });\n }\n\n createFileUploadLink(postId: string, filename: string, userId: string): Promise<string> {\n return this.callAction(IPostServiceCommands.createFileUploadLink, { filename, userId, postId });\n }\n\n attachUploadedFiles(postId: string, files: IUploadedFileInput[], createdBy: string): Promise<IFileInfo[]> {\n return this.callAction(IPostServiceCommands.attachUploadedFiles, { files, createdBy, postId });\n }\n\n createFilesUploadLink(postId: string, filenames: string[], userId: string): Promise<string[]> {\n return this.callAction(IPostServiceCommands.createFilesUploadLink, { filenames, userId, postId });\n }\n\n deleteFile(url: string): Promise<boolean> {\n return this.callAction(IPostServiceCommands.deleteFile, { url });\n }\n\n readMessage(messageId: IMessageIdentifier, user: string): Promise<boolean> {\n return this.callAction(IPostServiceCommands.readMessage, { ...messageId, user });\n }\n\n deliverMessage(messageId: IMessageIdentifier, user: string): Promise<boolean> {\n return this.callAction(IPostServiceCommands.deliverMessage, { ...messageId, user });\n }\n}\n","import { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport { IMoleculerTopics as MoleculerTopics, IPostThread } from '@messenger-box/core';\nimport { IPostThreadService } from '../../interfaces';\nimport { BaseProxyService } from './base-proxy-service';\n\n@injectable()\nexport class PostThreadMicroservice\n extends BaseProxyService<IPostThread, Omit<IPostThread, 'id'>>\n implements IPostThreadService\n{\n topic = MoleculerTopics.PostThreadService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n super(broker, logger);\n this.logger = logger.child({ className: 'PostThreadMicroservice' });\n }\n}\n","import { inject, injectable } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport { IMoleculerTopics as MoleculerTopics, IReaction, IReactionInput } from '@messenger-box/core';\nimport { IReactionService, IReactionServiceInput } from '../../interfaces';\nimport { BaseProxyService } from './base-proxy-service';\n\n@injectable()\nexport class ReactionMicroservice\n extends BaseProxyService<IReaction, IReactionServiceInput, Partial<IReactionInput>>\n implements IReactionService\n{\n topic = MoleculerTopics.ReactionService;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n super(broker, logger);\n this.logger = logger.child({ className: 'ReactionMicroservice' });\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 deletedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\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 files: [{ type: Schema.Types.ObjectId }],\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 sortBy = isObject(sort) ? { [sort?.key]: sort.value } : DEFAULT_SORTING;\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(sortBy as never)\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/core\");","module.exports = require(\"@adminide-stack/platform-server\");","module.exports = require(\"@common-stack/core\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"@container-stack/file-info-core\");","module.exports = require(\"@messenger-box/core\");","module.exports = require(\"@messenger-box/notification-api-core\");","module.exports = require(\"@skoropletov/moleculer-cron-tasks\");","module.exports = require(\"@vscode-alt/monaco-editor/esm/vs/nls\");","module.exports = require(\"date-fns/compareAsc\");","module.exports = require(\"date-fns/sub\");","module.exports = require(\"envalid\");","module.exports = require(\"graphql\");","module.exports = require(\"inversify\");","module.exports = require(\"lodash\");","module.exports = require(\"moleculer\");","module.exports = require(\"mongoose\");"],"sourceRoot":""}
@@ -11,7 +11,7 @@ export declare class BaseProxyService<T, C = T, U = T> implements IBaseService<T
11
11
  protected topic: MoleculerTopics;
12
12
  constructor(broker: ServiceBroker, logger: Logger);
13
13
  bulkCreate(data: C[]): MethodResponse<T, C, U, 'bulkCreate'>;
14
- count(conditions?: FilterQuery<Document>): MethodResponse<T, C, U, 'count'>;
14
+ count(criteria?: FilterQuery<Document>): MethodResponse<T, C, U, 'count'>;
15
15
  create(data: C): MethodResponse<T, C, U, 'create'>;
16
16
  delete(id: string | FilterQuery<Document>): MethodResponse<T, C, U, 'delete'>;
17
17
  get(id?: string | FilterQuery<Document>): MethodResponse<T, C, U, 'get'>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messenger-box/platform-server",
3
- "version": "0.0.1-alpha.183",
3
+ "version": "0.0.1-alpha.185",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -66,5 +66,5 @@
66
66
  "typescript": {
67
67
  "definition": "lib/index.d.ts"
68
68
  },
69
- "gitHead": "bc509e3abc4803887e8854d75c71ec411304bbcc"
69
+ "gitHead": "ad0e762f9eac0e6f02be5fca97f6f5ee4d97a783"
70
70
  }