@messenger-box/platform-server 0.0.1-alpha.58 → 0.0.1-alpha.63

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
@@ -402,7 +402,7 @@ const channelResolvers = () => ({
402
402
  },
403
403
  },
404
404
  Mutation: {
405
- createChannel(src, { name }, { channelService, userContext }) {
405
+ createChannel(src, { name, description }, { channelService, userContext }) {
406
406
  const { accountId, teamId } = userContext;
407
407
  return channelService.saveChannel({
408
408
  type: core_1.IRoomType.CHANNEL,
@@ -410,6 +410,7 @@ const channelResolvers = () => ({
410
410
  title: name,
411
411
  topic: name,
412
412
  team: teamId,
413
+ description: description,
413
414
  });
414
415
  },
415
416
  createDirectChannel(src, { receiver }, { channelService, userContext }) {
@@ -499,8 +500,16 @@ const postResolvers = () => ({
499
500
  return accountService.findAccountById(src.editedBy.toString());
500
501
  },
501
502
  author(src, args, { accountService }) {
503
+ var _a;
504
+ const author = (_a = src.author) === null || _a === void 0 ? void 0 : _a.toString();
505
+ if (author) {
506
+ return accountService.findAccountById(author);
507
+ }
502
508
  return accountService.findAccountById(src.editedBy.toString());
503
509
  },
510
+ channel(src, args, { channelService }) {
511
+ return channelService.get(src.channel.toString());
512
+ },
504
513
  },
505
514
  Query: {
506
515
  messages(src, { channelId, limit, skip }, { postService, userContext }) {
@@ -519,7 +528,11 @@ const postResolvers = () => ({
519
528
  },
520
529
  Mutation: {
521
530
  deleteMessage(src, { messageId }, { postService }) {
522
- return postService.delete(messageId.messageId);
531
+ const { channelId, messageId: id } = messageId;
532
+ return postService.delete({
533
+ channel: channelId,
534
+ id,
535
+ });
523
536
  },
524
537
  editMessage(src, { messageId, messageInput }, { postService, userContext }) {
525
538
  return postService.update(messageId.messageId, {
@@ -533,8 +546,16 @@ const postResolvers = () => ({
533
546
  channel: channelId,
534
547
  message: messageInput.content,
535
548
  editedBy: userContext.accountId,
549
+ author: userContext.accountId,
536
550
  });
537
551
  },
552
+ // pinMessage(src , { messageId , messageInput} , {postService , userContext}) {
553
+ // return postService.update(messageId.messageId, {
554
+ // isPinned : messageInput.isPinned,
555
+ // pinnedBy : userContext.accountId,
556
+ // channel : messageId.channelId
557
+ // } as any)
558
+ // }
538
559
  },
539
560
  });
540
561
  exports.postResolvers = postResolvers;
@@ -638,7 +659,7 @@ __webpack_require__.r(__webpack_exports__);
638
659
 
639
660
  "use strict";
640
661
  __webpack_require__.r(__webpack_exports__);
641
- /* harmony default export */ __webpack_exports__["default"] = ("type Channel implements IBaseRepo {\n id: String!\n title: String\n topic: String\n purpose: String\n team: AccountTeam\n lastPostAt: DateTime\n totalMsgCount: Int\n totalMsgCountRoot: Int\n creator: UserAccount\n members: [ChannelMember]\n\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 receiver: ID!\n ): Channel @addAccountContext @isAuthenticated\n\n createDirectChannel(\n receiver: ID!\n ): Channel @addAccountContext @isAuthenticated\n\n hideChannel(id: ID!): Boolean @isAuthenticated\n\n leaveChannel(id: ID!): Boolean @isAuthenticated\n}\n");
662
+ /* harmony default export */ __webpack_exports__["default"] = ("type Channel implements IBaseRepo {\n id: String!\n title: String\n topic: String\n purpose: String\n description: String\n team: AccountTeam\n lastPostAt: DateTime\n totalMsgCount: Int\n totalMsgCountRoot: Int\n creator: UserAccount\n members: [ChannelMember]\n\n createdAt: DateTime\n updatedAt: DateTime\n deletedAt: DateTime\n}\n\ntype ChannelUnread {\n teamId: String\n channelId: String\n msgCount: Int\n mentionCount: Int\n mentionCountRoot: Int\n msgCountRoot: Int\n notifyProps: AnyObject\n}\n\n\ninput ChannelFilterInput {\n nameFilter: String\n privacy: ChannelPrivacy\n joinedChannels: Boolean\n storyBy: ChannelSort\n}\n\ninput ChannelNameAndDirect {\n name: String!\n direct: Boolean!\n}\n\nenum ChannelSort {\n NAME\n NUMBER_OF_MESSAGES\n}\n\nenum ChannelPrivacy {\n PRIVATE\n PUBLIC\n ALL\n}\n\nenum RoomType {\n CHANNEL\n DIRECT\n GROUP\n PRIVATE\n VISITOR\n}\n\nextend type Query {\n channelByName(name: String!): Channel @addAccountContext @isAuthenticated\n channels(filter: ChannelFilterInput = {\n privacy: ALL,\n joinedChannels: false,\n sortyBy: NAME\n }): [Channel] @addAccountContext @isAuthenticated\n channelsByUser: [Channel] @addAccountContext @isAuthenticated\n directChannel(id: ID!): Channel @addAccountContext @isAuthenticated\n}\n\nextend type Mutation {\n createChannel(\n name: String!,\n description:String!\n ): Channel @addAccountContext @isAuthenticated\n\n createDirectChannel(\n receiver: ID!\n ): Channel @addAccountContext @isAuthenticated\n\n hideChannel(id: ID!): Boolean @isAuthenticated\n\n leaveChannel(id: ID!): Boolean @isAuthenticated\n}\n");
642
663
 
643
664
  /***/ }),
644
665
 
@@ -878,7 +899,10 @@ let BaseService = class BaseService {
878
899
  return this.create(rest);
879
900
  }
880
901
  delete(id) {
881
- return this.repository.delete({ id });
902
+ if (typeof id === 'string') {
903
+ return this.repository.delete({ id });
904
+ }
905
+ return this.repository.delete(id);
882
906
  }
883
907
  };
884
908
  BaseService = __decorate([
@@ -1278,6 +1302,7 @@ const channelModelSchema = new mongoose_1.Schema({
1278
1302
  totalMsgCountRoot: { type: mongoose_1.Schema.Types.Number },
1279
1303
  team: { type: mongoose_1.Schema.Types.ObjectId, ref: 'team' },
1280
1304
  title: { type: mongoose_1.Schema.Types.String },
1305
+ description: { type: mongoose_1.Schema.Types.String },
1281
1306
  purpose: { type: mongoose_1.Schema.Types.String },
1282
1307
  creator: { type: mongoose_1.Schema.Types.ObjectId, ref: 'accounts' },
1283
1308
  }, common_options_1.commonModeSchemaOptions);
@@ -1508,8 +1533,7 @@ let BaseRepository = BaseRepository_1 = class BaseRepository {
1508
1533
  }
1509
1534
  async get(conditions, selectedFields) {
1510
1535
  try {
1511
- const { id: _id } = conditions, remaining = __rest(conditions, ["id"]);
1512
- const response = await this.model.findOne(Object.assign({ _id }, remaining), selectedFields).exec();
1536
+ const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();
1513
1537
  return response === null || response === void 0 ? void 0 : response.toObject();
1514
1538
  }
1515
1539
  catch (e) {
@@ -1519,7 +1543,7 @@ let BaseRepository = BaseRepository_1 = class BaseRepository {
1519
1543
  }
1520
1544
  async find(conditions, selectedFields) {
1521
1545
  try {
1522
- const response = await this.model.findOne(conditions, selectedFields).exec();
1546
+ const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();
1523
1547
  return response === null || response === void 0 ? void 0 : response.toObject();
1524
1548
  }
1525
1549
  catch (e) {
@@ -1556,15 +1580,13 @@ let BaseRepository = BaseRepository_1 = class BaseRepository {
1556
1580
  try {
1557
1581
  const { overWrite } = options, remaining = __rest(options, ["overWrite"]);
1558
1582
  let old = {};
1559
- const { id } = criteria, rest = __rest(criteria, ["id"]);
1560
- const processedCriteria = id ? Object.assign({ _id: id }, rest) : criteria;
1561
1583
  if (!overWrite) {
1562
- old = await this.get(processedCriteria);
1584
+ old = await this.get(criteria);
1563
1585
  if (!old) {
1564
- throw Error(`(update) No existing record found for update with criteria ${JSON.stringify(processedCriteria)}`);
1586
+ throw Error(`(update) No existing record found for update with criteria ${JSON.stringify(criteria)}`);
1565
1587
  }
1566
1588
  }
1567
- return this.model.findOneAndUpdate(processedCriteria, lodash_1.mergeWith(old, update, (obj, src) => {
1589
+ return this.model.findOneAndUpdate(this.mapConditions(criteria), lodash_1.mergeWith(old, update, (obj, src) => {
1568
1590
  if (Array.isArray(src) && Array.isArray(obj)) {
1569
1591
  return src;
1570
1592
  }
@@ -1577,7 +1599,7 @@ let BaseRepository = BaseRepository_1 = class BaseRepository {
1577
1599
  }
1578
1600
  async delete(criteria) {
1579
1601
  try {
1580
- const deleted = await this.model.findOneAndDelete(criteria);
1602
+ const deleted = await this.model.findOneAndDelete(this.mapConditions(criteria));
1581
1603
  return !!deleted;
1582
1604
  }
1583
1605
  catch (e) {
@@ -1587,7 +1609,7 @@ let BaseRepository = BaseRepository_1 = class BaseRepository {
1587
1609
  }
1588
1610
  async bulkDelete(criteria) {
1589
1611
  try {
1590
- const deleted = await this.model.deleteMany(criteria);
1612
+ const deleted = await this.model.deleteMany(this.mapConditions(criteria));
1591
1613
  return (deleted === null || deleted === void 0 ? void 0 : deleted.deletedCount) || 0;
1592
1614
  }
1593
1615
  catch (e) {
@@ -1595,6 +1617,11 @@ let BaseRepository = BaseRepository_1 = class BaseRepository {
1595
1617
  throw e;
1596
1618
  }
1597
1619
  }
1620
+ // eslint-disable-next-line class-methods-use-this
1621
+ mapConditions(conditions) {
1622
+ const { id: _id } = conditions, remaining = __rest(conditions, ["id"]);
1623
+ return Object.assign(Object.assign({}, (_id ? { _id } : {})), remaining);
1624
+ }
1598
1625
  };
1599
1626
  BaseRepository = BaseRepository_1 = __decorate([
1600
1627
  inversify_1.injectable(),
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/default-notify-props.ts","webpack:///./src/constants/index.ts","webpack:///./src/constants/query.constants.ts","webpack:///./src/constants/types.ts","webpack:///./src/containers/containers.ts","webpack:///./src/containers/context-services-from-container.ts","webpack:///./src/containers/index.ts","webpack:///./src/graphql/index.ts","webpack:///./src/graphql/resolvers/channel-member.ts","webpack:///./src/graphql/resolvers/channel.ts","webpack:///./src/graphql/resolvers/index.ts","webpack:///./src/graphql/resolvers/post-thread.ts","webpack:///./src/graphql/resolvers/post.ts","webpack:///./src/graphql/resolvers/primitive-resolvers.ts","webpack:///./src/graphql/resolvers/reaction.ts","webpack:///./src/graphql/schema/base.graphql","webpack:///./src/graphql/schema/channel-member.graphql","webpack:///./src/graphql/schema/channel.graphql","webpack:///./src/graphql/schema/index.ts","webpack:///./src/graphql/schema/post-thread.graphql","webpack:///./src/graphql/schema/post.graphql","webpack:///./src/graphql/schema/preferences.graphql","webpack:///./src/graphql/schema/reaction.graphql","webpack:///./src/graphql/schema/users.graphql","webpack:///./src/index.ts","webpack:///./src/module.ts","webpack:///./src/services/base-service.ts","webpack:///./src/services/channel-service.ts","webpack:///./src/services/index.ts","webpack:///./src/services/post-service.ts","webpack:///./src/services/post-thread-service.ts","webpack:///./src/services/reaction-service.ts","webpack:///./src/store/index.ts","webpack:///./src/store/models/channel.ts","webpack:///./src/store/models/common-options.ts","webpack:///./src/store/models/index.ts","webpack:///./src/store/models/post-thread.ts","webpack:///./src/store/models/post.ts","webpack:///./src/store/models/reaction.ts","webpack:///./src/store/repositories/base-repository.ts","webpack:///./src/store/repositories/channel-repository.ts","webpack:///./src/store/repositories/index.ts","webpack:///./src/store/repositories/post-repository.ts","webpack:///./src/store/repositories/post-thread-repository.ts","webpack:///./src/store/repositories/reaction-repository.ts","webpack:///external \"@adminide-stack/account-api-server\"","webpack:///external \"@adminide-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@messenger-box/core\"","webpack:///external \"graphql-iso-date\"","webpack:///external \"inversify\"","webpack:///external \"lodash\"","webpack:///external \"mongoose\""],"names":[],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","export const DEFAULT_NOTIFY_PROPS = {\n desktopNotifyProp: true,\n markUnreadNotifyProp: true,\n pushNotifyProp: true,\n emailNotifyProp: true,\n ignoreChannelMentionsNotifyProp: true,\n};\n","export * from './types';\nexport * from './query.constants';\nexport * from './default-notify-props';\n","export enum PAGINATION_OPTIONS {\n limit = 10,\n skip = 0,\n}\n\nexport const DEFAULT_SORTING = {\n id: 'asc',\n};\n","export const TYPES = {\n BaseRepository: Symbol('BaseRepository'),\n BaseService: Symbol('BaseService'),\n\n ChannelRepository: Symbol('ChannelRepository'),\n PostRepository: Symbol('PostRepository'),\n PostThreadRepository: Symbol('PostThreadRepository'),\n ReactionRepository: Symbol('ReactionRepository'),\n\n ChannelService: Symbol('ChannelService'),\n PostService: Symbol('PostService'),\n PostThreadService: Symbol('PostThreadService'),\n ReactionService: Symbol('ReactionService'),\n};\n","import { ContainerModule, interfaces } from 'inversify';\nimport { ChannelService, PostService, PostThreadService, ReactionService } from '../services';\nimport { TYPES } from '../constants';\nimport {\n IPostService,\n IPostRepository,\n IPostThreadService,\n IPostThreadRepository,\n IChannelRepository,\n IChannelService,\n IReactionService,\n IReactionRepository,\n} from '../interfaces';\nimport { ChannelRepository, PostRepository, PostThreadRepository, ReactionRepository } from '../store';\n\n/**\n * Local services and exposed micro services to serve remote connections.\n * Operates within in the Gateway.\n *\n * @param settings Settings\n */\nexport const localContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetNamed('proxy');\n });\n\n/**\n * Operates external to the Gateway. Usually a broker listen to calls and invoke this service\n * local to the micro container.\n *\n * @param settings Settings\n */\nexport const externalContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetIsDefault();\n });\n","import { interfaces } from 'inversify';\nimport { IChannelService, IPostService, IPostThreadService, IReactionService, IServices } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport const contextServicesFromContainer = (container: interfaces.Container): IServices => ({\n channelService: container.get<IChannelService>(TYPES.ChannelService),\n postService: container.get<IPostService>(TYPES.PostService),\n postThreadService: container.get<IPostThreadService>(TYPES.PostThreadService),\n reactionService: container.get<IReactionService>(TYPES.ReactionService),\n});\n","export * from './containers';\nexport * from './context-services-from-container';\n","export * from './schema';\nexport * from './resolvers';\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelMemberResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { IChannel, IResolvers, IRoomType } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelResolvers = (): IResolvers<IContext> => ({\n Query: {\n channelByName(src, { name }, { channelService, userContext }) {\n return channelService.getByName(userContext.teamId, name) as Promise<IChannel>;\n },\n channels(src, _, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.getChannels(teamId, accountId, false, new Date().getTime()) as Promise<IChannel[]>;\n },\n channelsByUser(src, _, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.getAll({\n criteria: {\n creator: accountId,\n },\n }) as Promise<IChannel[]>;\n },\n directChannel(src, { id }, { channelService, userContext }) {\n return channelService.get({\n criteria: {\n id,\n user: userContext.accountId,\n type: IRoomType.DIRECT,\n },\n }) as Promise<IChannel>;\n },\n },\n Mutation: {\n createChannel(src, { name }, { 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 }) as Promise<IChannel>;\n },\n createDirectChannel(src, { receiver }, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.createDirectChannel({\n sender: accountId,\n receiver,\n }) as Promise<IChannel>;\n },\n hideChannel(src, { id }, { channelService }) {\n return channelService.hideChannel(id);\n },\n leaveChannel(src, { id }, { channelService }) {\n return channelService.leaveChannel(id);\n },\n },\n});\n","import { primitiveResolvers } from './primitive-resolvers';\nimport { channelResolvers } from './channel';\nimport { channelMemberResolvers } from './channel-member';\nimport { postResolvers } from './post';\nimport { postThreadResolvers } from './post-thread';\nimport { reactionResolvers } from './reaction';\n\nexport const messengerResolvers = [\n primitiveResolvers,\n channelResolvers,\n channelMemberResolvers,\n postResolvers,\n postThreadResolvers,\n reactionResolvers,\n];\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const postThreadResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { IResolvers, ISortEnum } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const postResolvers = (): IResolvers<IContext> => ({\n Post: {\n editedBy(src, args, { accountService }) {\n return accountService.findAccountById(src.editedBy.toString());\n },\n author(src, args, { accountService }) {\n return accountService.findAccountById(src.editedBy.toString());\n },\n },\n Query: {\n messages(src, { channelId, limit, skip }, { postService, userContext }) {\n return postService.getAllWithCount({\n criteria: {\n channel: channelId,\n },\n limit,\n skip,\n sort: {\n key: 'createdAt',\n value: ISortEnum.ASC,\n },\n });\n },\n },\n Mutation: {\n deleteMessage(src, { messageId }, { postService }) {\n return postService.delete(messageId.messageId);\n },\n editMessage(src, { messageId, messageInput }, { postService, userContext }) {\n return postService.update(messageId.messageId, {\n message: messageInput.content,\n editedBy: userContext.accountId,\n channel: messageId.channelId,\n } as any);\n },\n sendMessage(src, { channelId, messageInput }, { postService, userContext }) {\n return postService.create({\n channel: channelId,\n message: messageInput.content,\n editedBy: userContext.accountId,\n } as any);\n },\n },\n});\n","import { GraphQLDate, GraphQLTime, GraphQLDateTime } from 'graphql-iso-date';\n\nexport const primitiveResolvers = () => ({\n Date: GraphQLDate,\n Time: GraphQLTime,\n DateTime: GraphQLDateTime,\n});\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const reactionResolvers = (): IResolvers<IContext> => ({\n Query: {\n getPostReactions(src, { message }, { reactionService, userContext }) {\n return reactionService.getAll({\n criteria: {\n post: message,\n user: userContext.accountId,\n },\n });\n },\n },\n Mutation: {\n addReactionToMessage(src, { reaction }, { reactionService, userContext }) {\n return reactionService.create({\n ...reaction,\n user: userContext.accountId,\n });\n },\n updateReactionToMessage(src, { reaction, id }, { reactionService }) {\n return reactionService.update(id, { reaction });\n },\n removeReactionFromMessage(src, { id }, { reactionService }) {\n return reactionService.delete(id);\n },\n },\n});\n","export default \"interface IBaseRepo {\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput Sort{\\n key: String!,\\n value: SortEnum!,\\n}\\n\\nenum SortEnum{\\n ASC,\\n DESC\\n}\";","export default \"type ChannelMember {\\n id: ID!\\n user: String!\\n roles: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n explicitRoles: String\\n schemeAdmin: Boolean\\n lastViewedAt: Int\\n updatedAt: DateTime,\\n CreatedAt: DateTime,\\n}\\n\\ninput ChannelMemberInput {\\n userId: String!\\n roles: String\\n notifyProps: AnyObject\\n schemeGuest: Boolean\\n schemeUser: Boolean\\n schemeAdmin: Boolean\\n explicitRoles: String\\n}\\n\";","export default \"type Channel implements IBaseRepo {\\n id: String!\\n title: String\\n topic: String\\n purpose: String\\n team: AccountTeam\\n lastPostAt: DateTime\\n totalMsgCount: Int\\n totalMsgCountRoot: Int\\n creator: UserAccount\\n members: [ChannelMember]\\n\\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 receiver: ID!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n createDirectChannel(\\n receiver: ID!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n hideChannel(id: ID!): Boolean @isAuthenticated\\n\\n leaveChannel(id: ID!): Boolean @isAuthenticated\\n}\\n\";","import baseSchema from './base.graphql';\nimport channelSchema from './channel.graphql';\nimport channelMember from './channel-member.graphql';\nimport postSchema from './post.graphql';\nimport postThread from './post-thread.graphql';\nimport preferencesSchema from './preferences.graphql';\nimport usersSchema from './users.graphql';\nimport reactionSchema from './reaction.graphql';\n\nconst schema = [\n baseSchema,\n channelSchema,\n channelMember,\n postSchema,\n postThread,\n preferencesSchema,\n usersSchema,\n reactionSchema,\n].join('\\n');\n\nexport { schema };\n","export default \"type PostThread{\\n post: Post,\\n channel: Channel,\\n replyCount: Int,\\n lastReplyAt: DateTime,\\n participants:[UserAccount]\\n}\\n\";","export default \"type Post implements IBaseRepo {\\n id: String\\n author: UserAccount\\n channel: Channel\\n\\n rootId: String\\n parentId: String\\n originalId: String\\n\\n \\\"\\\"\\\" Post sent by server e.g. User joined channel \\\"\\\"\\\"\\n fromServer: Boolean\\n\\n message: String\\n type: String\\n props: AnyObject\\n hashTags: String\\n\\n filenames: [String]\\n fields: [String]\\n reactions: [Reaction]\\n\\n editedBy: UserAccount\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput MessageInput {\\n content: String!\\n userRef: [String] #userId\\n channelRef: [String] #channelId\\n}\\n\\ninput MessageIdentifier {\\n channelId: String!\\n messageId: String!\\n}\\n\\ntype PostsWithCursor {\\n cursor: String\\n channel: Channel\\n posts: [Post]\\n}\\n\\ntype Messages{\\n totalCount: Int,\\n data:[Post]\\n}\\n\\n\\nextend type Query {\\n messages(\\n channelId: ID,\\n# channelName: String,\\n# directTo: ID,\\n limit: Int,\\n skip: Int,\\n# searchRegex: String,\\n# excludeServer: Boolean\\n ): Messages! @isAuthenticated @addAccountContext\\n}\\n\\nextend type Mutation {\\n deleteMessage(messageId: MessageIdentifier!): Boolean @isAuthenticated\\n\\n editMessage(messageId: MessageIdentifier!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n\\n sendMessage(channelId: String!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n}\\n\\nextend type Subscription {\\n chatMessageAdded(channelId: String, directTo: String): Post @isAuthenticated @addAccountContext\\n}\\n\";","export default \"\\n\\ntype ChannelSettings {\\n disableNotification: Boolean\\n audio: String\\n desktop: String\\n duration: Int\\n mobile: String\\n mail: String\\n hideUnreadRoomStatus : Boolean\\n unreadTrayIconAlret: String\\n}\\n\\nextend type Preference_Account {\\n language: String\\n notificationDuration: Float\\n unreadTrayIconAlert: Boolean\\n useEmojis: Boolean\\n convertAsciiToEmoji: Boolean\\n autoLoadImages: Boolean\\n saveMobileBandwith: Boolean\\n collapseEmbeddedMeida: Boolean\\n unreadRoomsMode: Boolean\\n hideUserName: Boolean\\n hideRoles: Boolean\\n hideRightSideBarWithClick: Boolean\\n hideAvatars: Boolean\\n mergePrivateGroupsWithChannels: Boolean\\n enterKeyBehaviour: String\\n viewMode: String\\n offlineEmailNotifications: String\\n highlights: String\\n newRoomNotificationSound: String\\n newMessageNotificationSound: String\\n email: String\\n avatar: String\\n name: String\\n}\\n\\nextend type Preferences {\\n channel: ChannelSettings\\n}\\n\";","export default \"type Reaction{\\n id:ID!\\n reaction:String!,\\n user: UserAccount!,\\n post: Post!\\n}\\n\\ninput ReactionInput{\\n reaction:String!,\\n post: String!\\n}\\n\\nextend type Query{\\n getPostReactions(message:ID!):[Reaction] @isAuthenticated\\n}\\nextend type Mutation{\\n addReactionToMessage(reaction:ReactionInput):Reaction @isAuthenticated @addAccountContext\\n updateReactionToMessage(id:ID!, reaction:String!):Reaction @isAuthenticated @addAccountContext\\n removeReactionFromMessage(id:ID!):Boolean @isAuthenticated @addAccountContext\\n}\\n\";","export default \"\\nenum MessengerUserStatus {\\n ONLINE\\n AWAY\\n BUSY\\n INVISIBLE\\n}\\n\\ntype MessengerUser implements IUser {\\n id: ID!\\n username: String\\n email: String\\n status: MessengerUserStatus\\n avatar: String\\n name: String\\n lastLogin: String\\n channels: [Channel]\\n directMessages: [Channel]\\n}\";","/* eslint-disable import/no-extraneous-dependencies */\nimport { Feature } from '@common-stack/server-core';\nimport MessengerModule from './module';\n\nexport * from './constants';\nexport default new Feature(MessengerModule);\n","import { Feature } from '@common-stack/server-core';\nimport { schema, messengerResolvers } from './graphql';\nimport { localContainerModule, externalContainerModule, contextServicesFromContainer } from './containers';\n\nexport default new Feature({\n schema,\n createResolversFunc: messengerResolvers,\n createServiceFunc: contextServicesFromContainer,\n createContainerFunc: [externalContainerModule],\n createHemeraContainerFunc: [localContainerModule],\n addBrokerMainServiceClass: [],\n});\n","import { Document, FilterQuery } from 'mongoose';\nimport { injectable } from 'inversify';\nimport { GetAllArgs, IBaseRepository, IBaseService } from '../interfaces';\n\n@injectable()\nexport class BaseService<T, C = T, U = T> implements IBaseService<T, C, U> {\n constructor(protected repository: IBaseRepository<T>) {\n this.repository = repository;\n }\n\n async getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{ data: T[]; totalCount: number }> {\n const totalCount = await this.count(options.criteria);\n const data = await this.getAll(options);\n return {\n totalCount,\n data,\n };\n }\n\n count(conditions?: FilterQuery<Document<T>>): Promise<number> {\n return this.repository.count(conditions);\n }\n\n get(conditions: string | FilterQuery<Document<T>>): Promise<T> {\n if (typeof conditions === 'string') {\n return this.repository.get({ id: conditions });\n }\n return this.repository.get(conditions);\n }\n\n getName(name: string): Promise<T> {\n return this.repository.get({ name });\n }\n\n getAll(options: GetAllArgs<Document<T>>): Promise<T[]> {\n return this.repository.getAll(options);\n }\n\n create(data: C): Promise<T> {\n return this.repository.create<C>(data);\n }\n\n bulkCreate(data: C[]): Promise<T[]> {\n return this.repository.bulkCreate<C>(data);\n }\n\n async update(id: string, data: U, overwrite = true): Promise<T> {\n return this.repository.update<U>({ id }, data, { overwrite });\n }\n\n insert(data: (C | U) & { id?: string }, overwrite = true): Promise<T> {\n const { id, ...rest } = data;\n if (id) {\n const existing = this.repository.get({ id });\n if (existing) {\n return this.update(id, rest as U, overwrite);\n }\n }\n return this.create(rest as C);\n }\n\n delete(id: string): Promise<boolean> {\n return this.repository.delete({ id });\n }\n}\n","import { inject } from 'inversify';\nimport { IChannel, IChannelUnread, IPost, IRoomType, ISortEnum } from '@messenger-box/core';\nimport { IAccountService, ITeamService, TYPES as ADMINIDE_TYPES } from '@adminide-stack/account-api-server';\nimport { IConfigurationService } from '@adminide-stack/platform-server';\nimport { ServerTypes } from '@adminide-stack/core';\nimport { BaseService } from './base-service';\nimport { DEFAULT_NOTIFY_PROPS, TYPES } from '../constants';\nimport {\n IChannelRepository,\n ICreateDirectChannelParams,\n INotificationProps,\n IPostService,\n ISaveChannelParams,\n ISaveDirectChannelParams,\n} from '../interfaces';\n\nexport class ChannelService extends BaseService<IChannel, Omit<IChannel, 'id'>> {\n constructor(\n @inject(TYPES.ChannelRepository)\n readonly repository: IChannelRepository,\n @inject(ADMINIDE_TYPES.IAccountService)\n private readonly accountService: IAccountService,\n @inject(ADMINIDE_TYPES.ITeamService)\n private readonly teamsService: ITeamService,\n @inject(TYPES.PostService)\n private readonly postService: IPostService,\n @inject(ServerTypes.IConfigurationService)\n private readonly configService: IConfigurationService,\n ) {\n super(repository);\n }\n\n private static getDmNameFromIds(senderId: string, receiverId: string) {\n return `${senderId}__${receiverId}`;\n }\n\n private static get defaultNotifyProps(): INotificationProps {\n // #Todo: To be moved to settings\n return DEFAULT_NOTIFY_PROPS;\n }\n\n private getMaxChannelsPerTeam(teamId: string): Promise<number> {\n // #Todo: Get Max Channel per team from Team settings\n return Promise.resolve(10);\n }\n\n private async getCurrentChannelCountPerTeam(team: string) {\n return this.repository.count({\n team,\n type: IRoomType.CHANNEL,\n });\n }\n\n async createDirectChannel(data: ICreateDirectChannelParams): Promise<IChannel | Error> {\n const { sender, receiver } = data;\n const channelPayload: ISaveDirectChannelParams = {\n title: ChannelService.getDmNameFromIds(sender, receiver),\n type: IRoomType.DIRECT,\n creator: sender,\n members: [\n {\n user: sender,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n {\n user: receiver,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n ],\n };\n return this.saveDirectChannel(channelPayload);\n }\n\n async saveDirectChannel(channel: ISaveDirectChannelParams): Promise<IChannel | Error> {\n const { type, deletedAt } = channel;\n if (deletedAt) {\n return new Error('Deleted Channel can not be saved');\n }\n if (type !== IRoomType.DIRECT) {\n return new Error('Only direct channels are allowed');\n }\n return this.repository.create(channel);\n }\n\n async saveChannel(data: ISaveChannelParams): Promise<IChannel | Error> {\n const { type, team } = data;\n if (type !== IRoomType.CHANNEL) {\n return new Error('Invalid Channel Type');\n }\n const maxChannels = await this.getMaxChannelsPerTeam(team);\n const currentChannels = await this.getCurrentChannelCountPerTeam(team);\n const canAddNewChannel = currentChannels < maxChannels;\n if (!canAddNewChannel) {\n return Error(`Only max of ${maxChannels} allowed`);\n }\n return this.repository.create(data);\n }\n\n async getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error> {\n const channel: IChannel = await this.repository.get({\n id: channelId,\n members: { user: userId },\n });\n const { members, team, id } = channel;\n const member = members.find((i) => i.user === userId);\n const msgCount = channel.totalMsgCount - member.msgCount;\n const msgCountRoot = channel.totalMsgCountRoot - member.msgCountRoot;\n const { notifyProps, mentionCountRoot, mentionCount } = member;\n\n return {\n channelId: id,\n teamId: team.toString(),\n msgCount,\n msgCountRoot,\n mentionCount,\n notifyProps,\n mentionCountRoot,\n };\n }\n\n async getPinnedPosts(channelId: string): Promise<IPost[] | Error> {\n const posts = await this.postService.getAll({\n criteria: {\n channelId,\n isPinned: true,\n },\n sort: {\n key: 'CreatAt',\n value: ISortEnum.ASC,\n },\n });\n const replyCounts = await Promise.all(\n posts.map((post) => this.postService.count({ rootId: post.rootId || post.id })),\n );\n return posts.reduce((acc, curr, index) => [...acc, { ...curr, replyCount: replyCounts[index] }], []);\n }\n\n restore(channelId: string, time: Date): Promise<IChannel> {\n return this.repository.update(\n { id: channelId },\n {\n deletedAt: time,\n },\n );\n }\n\n getByName(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n });\n }\n\n getByNameIncludeDeleted(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n deletedAt: true,\n });\n }\n\n getByNames(team: string, titles: string[]): Promise<IChannel[] | Error> {\n return this.getAll({\n criteria: {\n team,\n title: { $in: titles },\n },\n });\n }\n\n getChannelCounts(team: string, user: string): Promise<any> {\n return this.count({\n team,\n members: { user },\n });\n }\n\n getChannels(\n team: string,\n user: string,\n includeDeleted: boolean,\n lastDeleteAt: number,\n ): Promise<IChannel[] | Error> {\n return this.getAll({\n criteria: {\n team,\n members: { user },\n },\n });\n }\n}\n","export * from './channel-service';\nexport * from './post-service';\nexport * from './post-thread-service';\nexport * from './reaction-service';\n","import { inject } from 'inversify';\nimport { IPost } from '@messenger-box/core';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { PostRepository } from '../store';\n\nexport class PostService extends BaseService<IPost> {\n constructor(\n @inject(TYPES.PostRepository)\n repository: PostRepository,\n ) {\n super(repository);\n }\n}\n","import { IPostThread } from '@messenger-box/core';\nimport { injectable, inject } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IPostThreadRepository, IPostThreadService } from '../interfaces';\n\n@injectable()\nexport class PostThreadService extends BaseService<IPostThread> implements IPostThreadService {\n constructor(\n @inject(TYPES.PostThreadRepository)\n readonly repository: IPostThreadRepository,\n ) {\n super(repository);\n }\n}\n","import { IReaction, IReactionInput } from '@messenger-box/core';\nimport { inject, injectable } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IReactionRepository, IReactionService, IReactionServiceInput } from '../interfaces';\n\n@injectable()\nexport class ReactionService\n extends BaseService<IReaction, IReactionServiceInput, Partial<IReactionInput>>\n implements IReactionService\n{\n constructor(\n @inject(TYPES.ReactionRepository)\n readonly reactionRepository: IReactionRepository,\n ) {\n super(reactionRepository);\n }\n}\n","export * from './repositories';\n","import { Connection, Document, Model, Schema } from 'mongoose';\nimport { IChannel, IRoomType } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IChannelModel = Document<IChannel>;\n\nconst channelModelSchema = new Schema(\n {\n type: {\n type: Schema.Types.String,\n enum: [IRoomType.CHANNEL, IRoomType.DIRECT, IRoomType.GROUP, IRoomType.PRIVATE, IRoomType.VISITOR],\n required: true,\n },\n members: [\n new Schema(\n {\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n roles: { type: Schema.Types.String },\n msgCount: { type: Schema.Types.Number },\n mentionCount: { type: Schema.Types.Number },\n mentionCountRoot: { type: Schema.Types.Number },\n msgCountRoot: { type: Schema.Types.Number },\n notifyProps: { type: Schema.Types.Mixed },\n explicitRoles: { type: Schema.Types.String },\n schemeAdmin: { type: Schema.Types.String },\n lastViewedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n },\n commonModeSchemaOptions,\n ),\n ],\n deletedAt: { type: Schema.Types.Date },\n lastPostAt: { type: Schema.Types.Date },\n totalMsgCount: { type: Schema.Types.Number },\n totalMsgCountRoot: { type: Schema.Types.Number },\n team: { type: Schema.Types.ObjectId, ref: 'team' },\n title: { type: Schema.Types.String },\n purpose: { type: Schema.Types.String },\n creator: { type: Schema.Types.ObjectId, ref: 'accounts' },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(channelModelSchema);\n\nexport type ChannelModelType = Model<IChannelModel>;\nexport const ChannelModelFunc: (db: Connection) => ChannelModelType = (db) =>\n db.model<IChannelModel>('channel', channelModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { Schema } from 'mongoose';\n\nexport const commonModeSchemaOptions = {\n timestamps: true,\n toJSON: {\n virtuals: true,\n },\n toObject: {\n virtuals: true,\n getters: true,\n transform(doc, ret) {\n delete ret.__v;\n delete ret._id;\n },\n },\n};\n\nexport const addIdVirtualFields = (schema: Schema) => {\n schema.set('toJSON', {\n virtuals: true,\n });\n return schema;\n};\n","export * from './channel';\nexport * from './post';\nexport * from './post-thread';\nexport * from './reaction';\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPostThread } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IThreadsModel = Document<IPostThread>;\n\nconst postThreadModelSchema = new Schema(\n {\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n replyCount: { type: Schema.Types.Number },\n lastReplyAt: { type: Schema.Types.Date },\n participants: [{ type: Schema.Types.ObjectId, ref: 'accounts' }],\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postThreadModelSchema);\n\nexport type PostThreadModelType = Model<IThreadsModel>;\nexport const PostThreadModelFunc: (db: Connection) => PostThreadModelType = (db) =>\n db.model<IThreadsModel>('post-threads', postThreadModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPost } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IPostModel = Document<IPost>;\n\nconst postModelSchema = new Schema(\n {\n createdAt: { type: Schema.Types.Date },\n editedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n editedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\n // isPinned goes to settings\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n rootId: { type: Schema.Types.String },\n parentId: { type: Schema.Types.String },\n originalId: { type: Schema.Types.String },\n message: { type: Schema.Types.String },\n type: { type: Schema.Types.String },\n props: { type: Schema.Types.Mixed },\n hashtags: { type: Schema.Types.Mixed },\n filenames: { type: Schema.Types.Mixed },\n fields: { type: Schema.Types.String },\n hasReactions: { type: Schema.Types.Boolean },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postModelSchema);\n\nexport type PostModelType = Model<IPostModel>;\nexport const PostModelFunc: (db: Connection) => PostModelType = (db) => db.model<IPostModel>('posts', postModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IReaction } from '@messenger-box/core';\nimport { addIdVirtualFields } from './common-options';\n\nexport type IReactionModel = Document<IReaction>;\n\nconst reactionModelSchema = new Schema({\n createdAt: { type: Schema.Types.Date },\n reaction: { type: Schema.Types.String },\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n});\n\naddIdVirtualFields(reactionModelSchema);\n\nexport type ReactionModelType = Model<IReactionModel>;\nexport const ReactionModelFunc: (db: Connection) => ReactionModelType = (db) =>\n db.model<IReactionModel>('reactions', reactionModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { mergeWith, isObject } from 'lodash';\nimport { logger as Logger } from '@cdm-logger/server';\n// eslint-disable-next-line import/no-unresolved\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { Connection, Document, FilterQuery, Model } from 'mongoose';\nimport { injectable, unmanaged } from 'inversify';\nimport { GetAllArgs, IBaseRepository } from '../../interfaces';\nimport { DEFAULT_SORTING, PAGINATION_OPTIONS } from '../../constants';\n\n@injectable()\nexport class BaseRepository<T, D = Document<T>> implements IBaseRepository<T, D> {\n private options: IMongoOptions;\n\n private logger: typeof Logger;\n\n private model: Model<D>;\n\n constructor(\n @unmanaged()\n modelFunc: (db: Connection) => Model<D>,\n @unmanaged()\n db: Connection,\n @unmanaged()\n logger: typeof Logger,\n @unmanaged()\n options?: IMongoOptions,\n ) {\n this.model = modelFunc(db);\n this.options = options;\n this.logger = logger.child({ className: BaseRepository.name });\n }\n\n public async getAll(options: GetAllArgs<D>): Promise<T[]> {\n try {\n const { criteria, selectedFields, sort, limit, skip } = options;\n // map id to mongoose _id\n const { id, ...rest } = criteria || { id: undefined };\n const response = await this.model\n .find({ ...rest, ...(id ? { _id: id } : {}) }, selectedFields)\n .limit(limit || PAGINATION_OPTIONS.limit)\n .skip(skip || PAGINATION_OPTIONS.skip)\n .sort(isObject(sort) ? { [sort?.key]: sort.value } : DEFAULT_SORTING)\n .exec();\n return response.map((i) => i?.toObject()) as T[];\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(options)}`);\n throw e;\n }\n }\n\n public async count(conditions?: FilterQuery<D>): Promise<number> {\n return this.model.count(conditions).exec();\n }\n\n public async get(conditions?: FilterQuery<D>, selectedFields?: string): Promise<T> {\n try {\n const { id: _id, ...remaining } = conditions;\n const response = await this.model.findOne({ _id, ...remaining }, 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(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 const { id, ...rest } = criteria;\n const processedCriteria = id ? { _id: id, ...rest } : criteria;\n if (!overWrite) {\n old = await this.get(processedCriteria);\n if (!old) {\n throw Error(\n `(update) No existing record found for update with criteria ${JSON.stringify(\n processedCriteria,\n )}`,\n );\n }\n }\n return this.model.findOneAndUpdate(\n processedCriteria,\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(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(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 import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\n// @ts-ignore\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IChannel } from '@messenger-box/core';\nimport { ChannelModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class ChannelRepository extends BaseRepository<IChannel> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(ChannelModelFunc, db, logger, options);\n }\n}\n","export * from './channel-repository';\nexport * from './post-repository';\nexport * from './post-thread-repository';\nexport * from './reaction-repository';\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IPost } from '@messenger-box/core';\nimport { PostModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class PostRepository extends BaseRepository<IPost> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(PostModelFunc, db, logger, options);\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IPostThread } from '@messenger-box/core';\nimport { PostThreadModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class PostThreadRepository extends BaseRepository<IPostThread> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(PostThreadModelFunc, db, logger, options);\n }\n}\n","import { IReaction } from '@messenger-box/core';\nimport { inject, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { ReactionModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\nimport { IReactionRepository } from '../../interfaces';\n\nexport class ReactionRepository extends BaseRepository<IReaction> implements IReactionRepository {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(ReactionModelFunc, db, logger, options);\n }\n}\n","module.exports = require(\"@adminide-stack/account-api-server\");","module.exports = require(\"@adminide-stack/core\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"@messenger-box/core\");","module.exports = require(\"graphql-iso-date\");","module.exports = require(\"inversify\");","module.exports = require(\"lodash\");","module.exports = require(\"mongoose\");"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/constants/default-notify-props.ts","webpack:///./src/constants/index.ts","webpack:///./src/constants/query.constants.ts","webpack:///./src/constants/types.ts","webpack:///./src/containers/containers.ts","webpack:///./src/containers/context-services-from-container.ts","webpack:///./src/containers/index.ts","webpack:///./src/graphql/index.ts","webpack:///./src/graphql/resolvers/channel-member.ts","webpack:///./src/graphql/resolvers/channel.ts","webpack:///./src/graphql/resolvers/index.ts","webpack:///./src/graphql/resolvers/post-thread.ts","webpack:///./src/graphql/resolvers/post.ts","webpack:///./src/graphql/resolvers/primitive-resolvers.ts","webpack:///./src/graphql/resolvers/reaction.ts","webpack:///./src/graphql/schema/base.graphql","webpack:///./src/graphql/schema/channel-member.graphql","webpack:///./src/graphql/schema/channel.graphql","webpack:///./src/graphql/schema/index.ts","webpack:///./src/graphql/schema/post-thread.graphql","webpack:///./src/graphql/schema/post.graphql","webpack:///./src/graphql/schema/preferences.graphql","webpack:///./src/graphql/schema/reaction.graphql","webpack:///./src/graphql/schema/users.graphql","webpack:///./src/index.ts","webpack:///./src/module.ts","webpack:///./src/services/base-service.ts","webpack:///./src/services/channel-service.ts","webpack:///./src/services/index.ts","webpack:///./src/services/post-service.ts","webpack:///./src/services/post-thread-service.ts","webpack:///./src/services/reaction-service.ts","webpack:///./src/store/index.ts","webpack:///./src/store/models/channel.ts","webpack:///./src/store/models/common-options.ts","webpack:///./src/store/models/index.ts","webpack:///./src/store/models/post-thread.ts","webpack:///./src/store/models/post.ts","webpack:///./src/store/models/reaction.ts","webpack:///./src/store/repositories/base-repository.ts","webpack:///./src/store/repositories/channel-repository.ts","webpack:///./src/store/repositories/index.ts","webpack:///./src/store/repositories/post-repository.ts","webpack:///./src/store/repositories/post-thread-repository.ts","webpack:///./src/store/repositories/reaction-repository.ts","webpack:///external \"@adminide-stack/account-api-server\"","webpack:///external \"@adminide-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@messenger-box/core\"","webpack:///external \"graphql-iso-date\"","webpack:///external \"inversify\"","webpack:///external \"lodash\"","webpack:///external \"mongoose\""],"names":[],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","export const DEFAULT_NOTIFY_PROPS = {\n desktopNotifyProp: true,\n markUnreadNotifyProp: true,\n pushNotifyProp: true,\n emailNotifyProp: true,\n ignoreChannelMentionsNotifyProp: true,\n};\n","export * from './types';\nexport * from './query.constants';\nexport * from './default-notify-props';\n","export enum PAGINATION_OPTIONS {\n limit = 10,\n skip = 0,\n}\n\nexport const DEFAULT_SORTING = {\n id: 'asc',\n};\n","export const TYPES = {\n BaseRepository: Symbol('BaseRepository'),\n BaseService: Symbol('BaseService'),\n\n ChannelRepository: Symbol('ChannelRepository'),\n PostRepository: Symbol('PostRepository'),\n PostThreadRepository: Symbol('PostThreadRepository'),\n ReactionRepository: Symbol('ReactionRepository'),\n\n ChannelService: Symbol('ChannelService'),\n PostService: Symbol('PostService'),\n PostThreadService: Symbol('PostThreadService'),\n ReactionService: Symbol('ReactionService'),\n};\n","import { ContainerModule, interfaces } from 'inversify';\nimport { ChannelService, PostService, PostThreadService, ReactionService } from '../services';\nimport { TYPES } from '../constants';\nimport {\n IPostService,\n IPostRepository,\n IPostThreadService,\n IPostThreadRepository,\n IChannelRepository,\n IChannelService,\n IReactionService,\n IReactionRepository,\n} from '../interfaces';\nimport { ChannelRepository, PostRepository, PostThreadRepository, ReactionRepository } from '../store';\n\n/**\n * Local services and exposed micro services to serve remote connections.\n * Operates within in the Gateway.\n *\n * @param settings Settings\n */\nexport const localContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetNamed('proxy');\n });\n\n/**\n * Operates external to the Gateway. Usually a broker listen to calls and invoke this service\n * local to the micro container.\n *\n * @param settings Settings\n */\nexport const externalContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetIsDefault();\n });\n","import { interfaces } from 'inversify';\nimport { IChannelService, IPostService, IPostThreadService, IReactionService, IServices } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport const contextServicesFromContainer = (container: interfaces.Container): IServices => ({\n channelService: container.get<IChannelService>(TYPES.ChannelService),\n postService: container.get<IPostService>(TYPES.PostService),\n postThreadService: container.get<IPostThreadService>(TYPES.PostThreadService),\n reactionService: container.get<IReactionService>(TYPES.ReactionService),\n});\n","export * from './containers';\nexport * from './context-services-from-container';\n","export * from './schema';\nexport * from './resolvers';\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelMemberResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { IChannel, IResolvers, IRoomType } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelResolvers = (): IResolvers<IContext> => ({\n Query: {\n channelByName(src, { name }, { channelService, userContext }) {\n return channelService.getByName(userContext.teamId, name) as Promise<IChannel>;\n },\n channels(src, _, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.getChannels(teamId, accountId, false, new Date().getTime()) as Promise<IChannel[]>;\n },\n channelsByUser(src, _, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.getAll({\n criteria: {\n creator: accountId,\n },\n }) as Promise<IChannel[]>;\n },\n directChannel(src, { id }, { channelService, userContext }) {\n return channelService.get({\n criteria: {\n id,\n user: userContext.accountId,\n type: IRoomType.DIRECT,\n },\n }) as Promise<IChannel>;\n },\n },\n Mutation: {\n createChannel(src, { name, description }, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.saveChannel({\n type: IRoomType.CHANNEL,\n creator: accountId,\n title: name,\n topic: name,\n team: teamId,\n description: description,\n }) as Promise<IChannel>;\n },\n createDirectChannel(src, { receiver }, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.createDirectChannel({\n sender: accountId,\n receiver,\n }) as Promise<IChannel>;\n },\n hideChannel(src, { id }, { channelService }) {\n return channelService.hideChannel(id);\n },\n leaveChannel(src, { id }, { channelService }) {\n return channelService.leaveChannel(id);\n },\n },\n});\n","import { primitiveResolvers } from './primitive-resolvers';\nimport { channelResolvers } from './channel';\nimport { channelMemberResolvers } from './channel-member';\nimport { postResolvers } from './post';\nimport { postThreadResolvers } from './post-thread';\nimport { reactionResolvers } from './reaction';\n\nexport const messengerResolvers = [\n primitiveResolvers,\n channelResolvers,\n channelMemberResolvers,\n postResolvers,\n postThreadResolvers,\n reactionResolvers,\n];\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const postThreadResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { IResolvers, ISortEnum } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const postResolvers = (): IResolvers<IContext> => ({\n Post: {\n editedBy(src, args, { accountService }) {\n return accountService.findAccountById(src.editedBy.toString());\n },\n author(src, args, { accountService }) {\n const author = src.author?.toString();\n if (author) {\n return accountService.findAccountById(author);\n }\n return accountService.findAccountById(src.editedBy.toString());\n },\n channel(src, args, { channelService }) {\n return channelService.get(src.channel.toString());\n },\n },\n Query: {\n messages(src, { channelId, limit, skip }, { postService, userContext }) {\n return postService.getAllWithCount({\n criteria: {\n channel: channelId,\n },\n limit,\n skip,\n sort: {\n key: 'createdAt',\n value: ISortEnum.ASC,\n },\n });\n },\n },\n Mutation: {\n deleteMessage(src, { messageId }, { postService }) {\n const { channelId, messageId: id } = messageId;\n return postService.delete({\n channel: channelId,\n id,\n });\n },\n editMessage(src, { messageId, messageInput }, { postService, userContext }) {\n return postService.update(messageId.messageId, {\n message: messageInput.content,\n editedBy: userContext.accountId,\n channel: messageId.channelId,\n } as any);\n },\n sendMessage(src, { channelId, messageInput }, { postService, userContext }) {\n return postService.create({\n channel: channelId,\n message: messageInput.content,\n editedBy: userContext.accountId,\n author: userContext.accountId,\n } as any);\n },\n // pinMessage(src , { messageId , messageInput} , {postService , userContext}) {\n // return postService.update(messageId.messageId, {\n // isPinned : messageInput.isPinned,\n // pinnedBy : userContext.accountId,\n // channel : messageId.channelId\n // } as any)\n // }\n },\n});\n","import { GraphQLDate, GraphQLTime, GraphQLDateTime } from 'graphql-iso-date';\n\nexport const primitiveResolvers = () => ({\n Date: GraphQLDate,\n Time: GraphQLTime,\n DateTime: GraphQLDateTime,\n});\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const reactionResolvers = (): IResolvers<IContext> => ({\n Query: {\n getPostReactions(src, { message }, { reactionService, userContext }) {\n return reactionService.getAll({\n criteria: {\n post: message,\n user: userContext.accountId,\n },\n });\n },\n },\n Mutation: {\n addReactionToMessage(src, { reaction }, { reactionService, userContext }) {\n return reactionService.create({\n ...reaction,\n user: userContext.accountId,\n });\n },\n updateReactionToMessage(src, { reaction, id }, { reactionService }) {\n return reactionService.update(id, { reaction });\n },\n removeReactionFromMessage(src, { id }, { reactionService }) {\n return reactionService.delete(id);\n },\n },\n});\n","export default \"interface IBaseRepo {\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput Sort{\\n key: String!,\\n value: SortEnum!,\\n}\\n\\nenum SortEnum{\\n ASC,\\n DESC\\n}\";","export default \"type ChannelMember {\\n id: ID!\\n user: String!\\n roles: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n explicitRoles: String\\n schemeAdmin: Boolean\\n lastViewedAt: Int\\n updatedAt: DateTime,\\n CreatedAt: DateTime,\\n}\\n\\ninput ChannelMemberInput {\\n userId: String!\\n roles: String\\n notifyProps: AnyObject\\n schemeGuest: Boolean\\n schemeUser: Boolean\\n schemeAdmin: Boolean\\n explicitRoles: String\\n}\\n\";","export default \"type Channel implements IBaseRepo {\\n id: String!\\n title: String\\n topic: String\\n purpose: String\\n description: String\\n team: AccountTeam\\n lastPostAt: DateTime\\n totalMsgCount: Int\\n totalMsgCountRoot: Int\\n creator: UserAccount\\n members: [ChannelMember]\\n\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ntype ChannelUnread {\\n teamId: String\\n channelId: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n}\\n\\n\\ninput ChannelFilterInput {\\n nameFilter: String\\n privacy: ChannelPrivacy\\n joinedChannels: Boolean\\n storyBy: ChannelSort\\n}\\n\\ninput ChannelNameAndDirect {\\n name: String!\\n direct: Boolean!\\n}\\n\\nenum ChannelSort {\\n NAME\\n NUMBER_OF_MESSAGES\\n}\\n\\nenum ChannelPrivacy {\\n PRIVATE\\n PUBLIC\\n ALL\\n}\\n\\nenum RoomType {\\n CHANNEL\\n DIRECT\\n GROUP\\n PRIVATE\\n VISITOR\\n}\\n\\nextend type Query {\\n channelByName(name: String!): Channel @addAccountContext @isAuthenticated\\n channels(filter: ChannelFilterInput = {\\n privacy: ALL,\\n joinedChannels: false,\\n sortyBy: NAME\\n }): [Channel] @addAccountContext @isAuthenticated\\n channelsByUser: [Channel] @addAccountContext @isAuthenticated\\n directChannel(id: ID!): Channel @addAccountContext @isAuthenticated\\n}\\n\\nextend type Mutation {\\n createChannel(\\n name: String!,\\n description:String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n createDirectChannel(\\n receiver: ID!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n hideChannel(id: ID!): Boolean @isAuthenticated\\n\\n leaveChannel(id: ID!): Boolean @isAuthenticated\\n}\\n\";","import baseSchema from './base.graphql';\nimport channelSchema from './channel.graphql';\nimport channelMember from './channel-member.graphql';\nimport postSchema from './post.graphql';\nimport postThread from './post-thread.graphql';\nimport preferencesSchema from './preferences.graphql';\nimport usersSchema from './users.graphql';\nimport reactionSchema from './reaction.graphql';\n\nconst schema = [\n baseSchema,\n channelSchema,\n channelMember,\n postSchema,\n postThread,\n preferencesSchema,\n usersSchema,\n reactionSchema,\n].join('\\n');\n\nexport { schema };\n","export default \"type PostThread{\\n post: Post,\\n channel: Channel,\\n replyCount: Int,\\n lastReplyAt: DateTime,\\n participants:[UserAccount]\\n}\\n\";","export default \"type Post implements IBaseRepo {\\n id: String\\n author: UserAccount\\n channel: Channel\\n\\n rootId: String\\n parentId: String\\n originalId: String\\n\\n \\\"\\\"\\\" Post sent by server e.g. User joined channel \\\"\\\"\\\"\\n fromServer: Boolean\\n\\n message: String\\n type: String\\n props: AnyObject\\n hashTags: String\\n\\n filenames: [String]\\n fields: [String]\\n reactions: [Reaction]\\n\\n editedBy: UserAccount\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput MessageInput {\\n content: String!\\n userRef: [String] #userId\\n channelRef: [String] #channelId\\n}\\n\\ninput MessageIdentifier {\\n channelId: String!\\n messageId: String!\\n}\\n\\ntype PostsWithCursor {\\n cursor: String\\n channel: Channel\\n posts: [Post]\\n}\\n\\ntype Messages{\\n totalCount: Int,\\n data:[Post]\\n}\\n\\n\\nextend type Query {\\n messages(\\n channelId: ID,\\n# channelName: String,\\n# directTo: ID,\\n limit: Int,\\n skip: Int,\\n# searchRegex: String,\\n# excludeServer: Boolean\\n ): Messages! @isAuthenticated @addAccountContext\\n}\\n\\nextend type Mutation {\\n deleteMessage(messageId: MessageIdentifier!): Boolean @isAuthenticated\\n\\n editMessage(messageId: MessageIdentifier!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n\\n sendMessage(channelId: String!, messageInput: MessageInput!): Post @isAuthenticated @addAccountContext\\n}\\n\\nextend type Subscription {\\n chatMessageAdded(channelId: String, directTo: String): Post @isAuthenticated @addAccountContext\\n}\\n\";","export default \"\\n\\ntype ChannelSettings {\\n disableNotification: Boolean\\n audio: String\\n desktop: String\\n duration: Int\\n mobile: String\\n mail: String\\n hideUnreadRoomStatus : Boolean\\n unreadTrayIconAlret: String\\n}\\n\\nextend type Preference_Account {\\n language: String\\n notificationDuration: Float\\n unreadTrayIconAlert: Boolean\\n useEmojis: Boolean\\n convertAsciiToEmoji: Boolean\\n autoLoadImages: Boolean\\n saveMobileBandwith: Boolean\\n collapseEmbeddedMeida: Boolean\\n unreadRoomsMode: Boolean\\n hideUserName: Boolean\\n hideRoles: Boolean\\n hideRightSideBarWithClick: Boolean\\n hideAvatars: Boolean\\n mergePrivateGroupsWithChannels: Boolean\\n enterKeyBehaviour: String\\n viewMode: String\\n offlineEmailNotifications: String\\n highlights: String\\n newRoomNotificationSound: String\\n newMessageNotificationSound: String\\n email: String\\n avatar: String\\n name: String\\n}\\n\\nextend type Preferences {\\n channel: ChannelSettings\\n}\\n\";","export default \"type Reaction{\\n id:ID!\\n reaction:String!,\\n user: UserAccount!,\\n post: Post!\\n}\\n\\ninput ReactionInput{\\n reaction:String!,\\n post: String!\\n}\\n\\nextend type Query{\\n getPostReactions(message:ID!):[Reaction] @isAuthenticated\\n}\\nextend type Mutation{\\n addReactionToMessage(reaction:ReactionInput):Reaction @isAuthenticated @addAccountContext\\n updateReactionToMessage(id:ID!, reaction:String!):Reaction @isAuthenticated @addAccountContext\\n removeReactionFromMessage(id:ID!):Boolean @isAuthenticated @addAccountContext\\n}\\n\";","export default \"\\nenum MessengerUserStatus {\\n ONLINE\\n AWAY\\n BUSY\\n INVISIBLE\\n}\\n\\ntype MessengerUser implements IUser {\\n id: ID!\\n username: String\\n email: String\\n status: MessengerUserStatus\\n avatar: String\\n name: String\\n lastLogin: String\\n channels: [Channel]\\n directMessages: [Channel]\\n}\";","/* eslint-disable import/no-extraneous-dependencies */\nimport { Feature } from '@common-stack/server-core';\nimport MessengerModule from './module';\n\nexport * from './constants';\nexport default new Feature(MessengerModule);\n","import { Feature } from '@common-stack/server-core';\nimport { schema, messengerResolvers } from './graphql';\nimport { localContainerModule, externalContainerModule, contextServicesFromContainer } from './containers';\n\nexport default new Feature({\n schema,\n createResolversFunc: messengerResolvers,\n createServiceFunc: contextServicesFromContainer,\n createContainerFunc: [externalContainerModule],\n createHemeraContainerFunc: [localContainerModule],\n addBrokerMainServiceClass: [],\n});\n","import { Document, FilterQuery } from 'mongoose';\nimport { injectable } from 'inversify';\nimport { GetAllArgs, IBaseRepository, IBaseService } from '../interfaces';\n\n@injectable()\nexport class BaseService<T, C = T, U = T> implements IBaseService<T, C, U> {\n constructor(protected repository: IBaseRepository<T>) {\n this.repository = repository;\n }\n\n async getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{ data: T[]; totalCount: number }> {\n const totalCount = await this.count(options.criteria);\n const data = await this.getAll(options);\n return {\n totalCount,\n data,\n };\n }\n\n count(conditions?: FilterQuery<Document<T>>): Promise<number> {\n return this.repository.count(conditions);\n }\n\n get(conditions: string | FilterQuery<Document<T>>): Promise<T> {\n if (typeof conditions === 'string') {\n return this.repository.get({ id: conditions });\n }\n return this.repository.get(conditions);\n }\n\n getName(name: string): Promise<T> {\n return this.repository.get({ name });\n }\n\n getAll(options: GetAllArgs<Document<T>>): Promise<T[]> {\n return this.repository.getAll(options);\n }\n\n create(data: C): Promise<T> {\n return this.repository.create<C>(data);\n }\n\n bulkCreate(data: C[]): Promise<T[]> {\n return this.repository.bulkCreate<C>(data);\n }\n\n async update(id: string, data: U, overwrite = true): Promise<T> {\n return this.repository.update<U>({ id }, data, { overwrite });\n }\n\n insert(data: (C | U) & { id?: string }, overwrite = true): Promise<T> {\n const { id, ...rest } = data;\n if (id) {\n const existing = this.repository.get({ id });\n if (existing) {\n return this.update(id, rest as U, overwrite);\n }\n }\n return this.create(rest as C);\n }\n\n delete(id: string | FilterQuery<Document<T>>): Promise<boolean> {\n if (typeof id === 'string') {\n return this.repository.delete({ id });\n }\n return this.repository.delete(id);\n }\n}\n","import { inject } from 'inversify';\nimport { IChannel, IChannelUnread, IPost, IRoomType, ISortEnum } from '@messenger-box/core';\nimport { IAccountService, ITeamService, TYPES as ADMINIDE_TYPES } from '@adminide-stack/account-api-server';\nimport { IConfigurationService } from '@adminide-stack/platform-server';\nimport { ServerTypes } from '@adminide-stack/core';\nimport { BaseService } from './base-service';\nimport { DEFAULT_NOTIFY_PROPS, TYPES } from '../constants';\nimport {\n IChannelRepository,\n ICreateDirectChannelParams,\n INotificationProps,\n IPostService,\n ISaveChannelParams,\n ISaveDirectChannelParams,\n} from '../interfaces';\n\nexport class ChannelService extends BaseService<IChannel, Omit<IChannel, 'id'>> {\n constructor(\n @inject(TYPES.ChannelRepository)\n readonly repository: IChannelRepository,\n @inject(ADMINIDE_TYPES.IAccountService)\n private readonly accountService: IAccountService,\n @inject(ADMINIDE_TYPES.ITeamService)\n private readonly teamsService: ITeamService,\n @inject(TYPES.PostService)\n private readonly postService: IPostService,\n @inject(ServerTypes.IConfigurationService)\n private readonly configService: IConfigurationService,\n ) {\n super(repository);\n }\n\n private static getDmNameFromIds(senderId: string, receiverId: string) {\n return `${senderId}__${receiverId}`;\n }\n\n private static get defaultNotifyProps(): INotificationProps {\n // #Todo: To be moved to settings\n return DEFAULT_NOTIFY_PROPS;\n }\n\n private getMaxChannelsPerTeam(teamId: string): Promise<number> {\n // #Todo: Get Max Channel per team from Team settings\n return Promise.resolve(10);\n }\n\n private async getCurrentChannelCountPerTeam(team: string) {\n return this.repository.count({\n team,\n type: IRoomType.CHANNEL,\n });\n }\n\n async createDirectChannel(data: ICreateDirectChannelParams): Promise<IChannel | Error> {\n const { sender, receiver } = data;\n const channelPayload: ISaveDirectChannelParams = {\n title: ChannelService.getDmNameFromIds(sender, receiver),\n type: IRoomType.DIRECT,\n creator: sender,\n members: [\n {\n user: sender,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n {\n user: receiver,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n ],\n };\n return this.saveDirectChannel(channelPayload);\n }\n\n async saveDirectChannel(channel: ISaveDirectChannelParams): Promise<IChannel | Error> {\n const { type, deletedAt } = channel;\n if (deletedAt) {\n return new Error('Deleted Channel can not be saved');\n }\n if (type !== IRoomType.DIRECT) {\n return new Error('Only direct channels are allowed');\n }\n return this.repository.create(channel);\n }\n\n async saveChannel(data: ISaveChannelParams): Promise<IChannel | Error> {\n const { type, team } = data;\n if (type !== IRoomType.CHANNEL) {\n return new Error('Invalid Channel Type');\n }\n const maxChannels = await this.getMaxChannelsPerTeam(team);\n const currentChannels = await this.getCurrentChannelCountPerTeam(team);\n const canAddNewChannel = currentChannels < maxChannels;\n if (!canAddNewChannel) {\n return Error(`Only max of ${maxChannels} allowed`);\n }\n return this.repository.create(data);\n }\n\n async getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error> {\n const channel: IChannel = await this.repository.get({\n id: channelId,\n members: { user: userId },\n });\n const { members, team, id } = channel;\n const member = members.find((i) => i.user === userId);\n const msgCount = channel.totalMsgCount - member.msgCount;\n const msgCountRoot = channel.totalMsgCountRoot - member.msgCountRoot;\n const { notifyProps, mentionCountRoot, mentionCount } = member;\n\n return {\n channelId: id,\n teamId: team.toString(),\n msgCount,\n msgCountRoot,\n mentionCount,\n notifyProps,\n mentionCountRoot,\n };\n }\n\n async getPinnedPosts(channelId: string): Promise<IPost[] | Error> {\n const posts = await this.postService.getAll({\n criteria: {\n channelId,\n isPinned: true,\n },\n sort: {\n key: 'CreatAt',\n value: ISortEnum.ASC,\n },\n });\n const replyCounts = await Promise.all(\n posts.map((post) => this.postService.count({ rootId: post.rootId || post.id })),\n );\n return posts.reduce((acc, curr, index) => [...acc, { ...curr, replyCount: replyCounts[index] }], []);\n }\n\n restore(channelId: string, time: Date): Promise<IChannel> {\n return this.repository.update(\n { id: channelId },\n {\n deletedAt: time,\n },\n );\n }\n\n getByName(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n });\n }\n\n getByNameIncludeDeleted(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n deletedAt: true,\n });\n }\n\n getByNames(team: string, titles: string[]): Promise<IChannel[] | Error> {\n return this.getAll({\n criteria: {\n team,\n title: { $in: titles },\n },\n });\n }\n\n getChannelCounts(team: string, user: string): Promise<any> {\n return this.count({\n team,\n members: { user },\n });\n }\n\n getChannels(\n team: string,\n user: string,\n includeDeleted: boolean,\n lastDeleteAt: number,\n ): Promise<IChannel[] | Error> {\n return this.getAll({\n criteria: {\n team,\n members: { user },\n },\n });\n }\n}\n","export * from './channel-service';\nexport * from './post-service';\nexport * from './post-thread-service';\nexport * from './reaction-service';\n","import { inject } from 'inversify';\nimport { IPost } from '@messenger-box/core';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { PostRepository } from '../store';\n\nexport class PostService extends BaseService<IPost> {\n constructor(\n @inject(TYPES.PostRepository)\n repository: PostRepository,\n ) {\n super(repository);\n }\n}\n","import { IPostThread } from '@messenger-box/core';\nimport { injectable, inject } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IPostThreadRepository, IPostThreadService } from '../interfaces';\n\n@injectable()\nexport class PostThreadService extends BaseService<IPostThread> implements IPostThreadService {\n constructor(\n @inject(TYPES.PostThreadRepository)\n readonly repository: IPostThreadRepository,\n ) {\n super(repository);\n }\n}\n","import { IReaction, IReactionInput } from '@messenger-box/core';\nimport { inject, injectable } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IReactionRepository, IReactionService, IReactionServiceInput } from '../interfaces';\n\n@injectable()\nexport class ReactionService\n extends BaseService<IReaction, IReactionServiceInput, Partial<IReactionInput>>\n implements IReactionService\n{\n constructor(\n @inject(TYPES.ReactionRepository)\n readonly reactionRepository: IReactionRepository,\n ) {\n super(reactionRepository);\n }\n}\n","export * from './repositories';\n","import { Connection, Document, Model, Schema } from 'mongoose';\nimport { IChannel, IRoomType } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IChannelModel = Document<IChannel>;\n\nconst channelModelSchema = new Schema(\n {\n type: {\n type: Schema.Types.String,\n enum: [IRoomType.CHANNEL, IRoomType.DIRECT, IRoomType.GROUP, IRoomType.PRIVATE, IRoomType.VISITOR],\n required: true,\n },\n members: [\n new Schema(\n {\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n roles: { type: Schema.Types.String },\n msgCount: { type: Schema.Types.Number },\n mentionCount: { type: Schema.Types.Number },\n mentionCountRoot: { type: Schema.Types.Number },\n msgCountRoot: { type: Schema.Types.Number },\n notifyProps: { type: Schema.Types.Mixed },\n explicitRoles: { type: Schema.Types.String },\n schemeAdmin: { type: Schema.Types.String },\n lastViewedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n },\n commonModeSchemaOptions,\n ),\n ],\n deletedAt: { type: Schema.Types.Date },\n lastPostAt: { type: Schema.Types.Date },\n totalMsgCount: { type: Schema.Types.Number },\n totalMsgCountRoot: { type: Schema.Types.Number },\n team: { type: Schema.Types.ObjectId, ref: 'team' },\n title: { type: Schema.Types.String },\n description: { type: Schema.Types.String },\n purpose: { type: Schema.Types.String },\n creator: { type: Schema.Types.ObjectId, ref: 'accounts' },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(channelModelSchema);\n\nexport type ChannelModelType = Model<IChannelModel>;\nexport const ChannelModelFunc: (db: Connection) => ChannelModelType = (db) =>\n db.model<IChannelModel>('channel', channelModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { Schema } from 'mongoose';\n\nexport const commonModeSchemaOptions = {\n timestamps: true,\n toJSON: {\n virtuals: true,\n },\n toObject: {\n virtuals: true,\n getters: true,\n transform(doc, ret) {\n delete ret.__v;\n delete ret._id;\n },\n },\n};\n\nexport const addIdVirtualFields = (schema: Schema) => {\n schema.set('toJSON', {\n virtuals: true,\n });\n return schema;\n};\n","export * from './channel';\nexport * from './post';\nexport * from './post-thread';\nexport * from './reaction';\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPostThread } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IThreadsModel = Document<IPostThread>;\n\nconst postThreadModelSchema = new Schema(\n {\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n replyCount: { type: Schema.Types.Number },\n lastReplyAt: { type: Schema.Types.Date },\n participants: [{ type: Schema.Types.ObjectId, ref: 'accounts' }],\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postThreadModelSchema);\n\nexport type PostThreadModelType = Model<IThreadsModel>;\nexport const PostThreadModelFunc: (db: Connection) => PostThreadModelType = (db) =>\n db.model<IThreadsModel>('post-threads', postThreadModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPost } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IPostModel = Document<IPost>;\n\nconst postModelSchema = new Schema(\n {\n createdAt: { type: Schema.Types.Date },\n editedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n editedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\n // isPinned goes to settings\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n rootId: { type: Schema.Types.String },\n parentId: { type: Schema.Types.String },\n originalId: { type: Schema.Types.String },\n message: { type: Schema.Types.String },\n type: { type: Schema.Types.String },\n props: { type: Schema.Types.Mixed },\n hashtags: { type: Schema.Types.Mixed },\n filenames: { type: Schema.Types.Mixed },\n fields: { type: Schema.Types.String },\n hasReactions: { type: Schema.Types.Boolean },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postModelSchema);\n\nexport type PostModelType = Model<IPostModel>;\nexport const PostModelFunc: (db: Connection) => PostModelType = (db) => db.model<IPostModel>('posts', postModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IReaction } from '@messenger-box/core';\nimport { addIdVirtualFields } from './common-options';\n\nexport type IReactionModel = Document<IReaction>;\n\nconst reactionModelSchema = new Schema({\n createdAt: { type: Schema.Types.Date },\n reaction: { type: Schema.Types.String },\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n});\n\naddIdVirtualFields(reactionModelSchema);\n\nexport type ReactionModelType = Model<IReactionModel>;\nexport const ReactionModelFunc: (db: Connection) => ReactionModelType = (db) =>\n db.model<IReactionModel>('reactions', reactionModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { mergeWith, isObject } from 'lodash';\nimport { logger as Logger } from '@cdm-logger/server';\n// eslint-disable-next-line import/no-unresolved\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { Connection, Document, FilterQuery, Model } from 'mongoose';\nimport { injectable, unmanaged } from 'inversify';\nimport { GetAllArgs, IBaseRepository } from '../../interfaces';\nimport { DEFAULT_SORTING, PAGINATION_OPTIONS } from '../../constants';\n\n@injectable()\nexport class BaseRepository<T, D = Document<T>> implements IBaseRepository<T, D> {\n private options: IMongoOptions;\n\n private logger: typeof Logger;\n\n private model: Model<D>;\n\n constructor(\n @unmanaged()\n modelFunc: (db: Connection) => Model<D>,\n @unmanaged()\n db: Connection,\n @unmanaged()\n logger: typeof Logger,\n @unmanaged()\n options?: IMongoOptions,\n ) {\n this.model = modelFunc(db);\n this.options = options;\n this.logger = logger.child({ className: BaseRepository.name });\n }\n\n public async getAll(options: GetAllArgs<D>): Promise<T[]> {\n try {\n const { criteria, selectedFields, sort, limit, skip } = options;\n // map id to mongoose _id\n const { id, ...rest } = criteria || { id: undefined };\n const response = await this.model\n .find({ ...rest, ...(id ? { _id: id } : {}) }, selectedFields)\n .limit(limit || PAGINATION_OPTIONS.limit)\n .skip(skip || PAGINATION_OPTIONS.skip)\n .sort(isObject(sort) ? { [sort?.key]: sort.value } : DEFAULT_SORTING)\n .exec();\n return response.map((i) => i?.toObject()) as T[];\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(options)}`);\n throw e;\n }\n }\n\n public async count(conditions?: FilterQuery<D>): Promise<number> {\n return this.model.count(conditions).exec();\n }\n\n public async get(conditions?: FilterQuery<D>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async find(conditions: Partial<FilterQuery<D>>, selectedFields?: string): Promise<T> {\n try {\n const response = await this.model.findOne(this.mapConditions(conditions), selectedFields).exec();\n return response?.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to retrieve Model with criteria ${JSON.stringify(conditions)}`);\n throw e;\n }\n }\n\n public async create<I>(data: I): Promise<T> {\n try {\n const response = await this.model.create(data);\n return response.toObject() as T;\n } catch (e) {\n this.logger.error(`Unable to create Model with data ${JSON.stringify(data)} due to ${e?.message}`);\n throw e;\n }\n }\n\n public async bulkCreate<I>(data: I[]): Promise<T[]> {\n try {\n const response = await this.model.insertMany(data, {\n lean: true,\n ordered: true,\n });\n return response as unknown as T[];\n } catch (e) {\n this.logger.error(`Unable to bulk create due to error`, e.message);\n }\n }\n\n public async upsert<I>(conditions: FilterQuery<D>, update: I, options?: Record<string, unknown>): Promise<T> {\n return this.update<I>(conditions, update, {\n upsert: true,\n ...options,\n });\n }\n\n public async update<I>(criteria: FilterQuery<D>, update: I, options: Record<string, unknown>): Promise<T> {\n try {\n const { overWrite, ...remaining } = options;\n let old = {};\n if (!overWrite) {\n old = await this.get(criteria);\n if (!old) {\n throw Error(\n `(update) No existing record found for update with criteria ${JSON.stringify(criteria)}`,\n );\n }\n }\n return this.model.findOneAndUpdate(\n this.mapConditions(criteria),\n mergeWith(old, update, (obj, src) => {\n if (Array.isArray(src) && Array.isArray(obj)) {\n return src;\n }\n }),\n { new: true, useFindAndModify: false, ...remaining },\n ) as unknown as Promise<T>;\n } catch (e) {\n this.logger.error(`Unable to Update with criteria ${criteria} and data ${update}`);\n throw e;\n }\n }\n\n public async delete(criteria: FilterQuery<D>): Promise<boolean> {\n try {\n const deleted = await this.model.findOneAndDelete(this.mapConditions(criteria));\n return !!deleted;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria ${criteria}`);\n throw e;\n }\n }\n\n public async bulkDelete(criteria: FilterQuery<D>): Promise<number> {\n try {\n const deleted = await this.model.deleteMany(this.mapConditions(criteria));\n return deleted?.deletedCount || 0;\n } catch (e) {\n this.logger.error(`Unable to delete the model with criteria ${criteria}`);\n throw e;\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n private mapConditions(conditions: FilterQuery<D>): FilterQuery<D> {\n const { id: _id, ...remaining } = conditions;\n return {\n ...(_id ? { _id } : {}),\n ...remaining,\n };\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\n// @ts-ignore\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IChannel } from '@messenger-box/core';\nimport { ChannelModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class ChannelRepository extends BaseRepository<IChannel> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(ChannelModelFunc, db, logger, options);\n }\n}\n","export * from './channel-repository';\nexport * from './post-repository';\nexport * from './post-thread-repository';\nexport * from './reaction-repository';\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IPost } from '@messenger-box/core';\nimport { PostModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class PostRepository extends BaseRepository<IPost> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(PostModelFunc, db, logger, options);\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { inject, injectable, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server/lib/logger';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { IPostThread } from '@messenger-box/core';\nimport { PostThreadModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\n\n@injectable()\nexport class PostThreadRepository extends BaseRepository<IPostThread> {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(PostThreadModelFunc, db, logger, options);\n }\n}\n","import { IReaction } from '@messenger-box/core';\nimport { inject, optional } from 'inversify';\nimport { Connection } from 'mongoose';\nimport { logger as Logger } from '@cdm-logger/server';\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { ReactionModelFunc } from '../models';\nimport { BaseRepository } from './base-repository';\nimport { IReactionRepository } from '../../interfaces';\n\nexport class ReactionRepository extends BaseRepository<IReaction> implements IReactionRepository {\n constructor(\n @inject('MongoDBConnection')\n db: Connection,\n @inject('Logger')\n logger: typeof Logger,\n @inject('IMongoOptions')\n @optional()\n options?: IMongoOptions,\n ) {\n super(ReactionModelFunc, db, logger, options);\n }\n}\n","module.exports = require(\"@adminide-stack/account-api-server\");","module.exports = require(\"@adminide-stack/core\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"@messenger-box/core\");","module.exports = require(\"graphql-iso-date\");","module.exports = require(\"inversify\");","module.exports = require(\"lodash\");","module.exports = require(\"mongoose\");"],"sourceRoot":""}
@@ -12,6 +12,7 @@ export interface IBaseService<T, C = T, U = T> {
12
12
  bulkCreate(data: C[]): Promise<T[]>;
13
13
  update(id: string, data: U, overwrite?: boolean): Promise<T>;
14
14
  delete(id: string): Promise<boolean>;
15
+ delete(conditions: FilterQuery<Document<T>>): Promise<boolean>;
15
16
  getAllWithCount(options: GetAllArgs<Document<T>>): Promise<{
16
17
  data: T[];
17
18
  totalCount: number;
@@ -17,5 +17,5 @@ export declare class BaseService<T, C = T, U = T> implements IBaseService<T, C,
17
17
  insert(data: (C | U) & {
18
18
  id?: string;
19
19
  }, overwrite?: boolean): Promise<T>;
20
- delete(id: string): Promise<boolean>;
20
+ delete(id: string | FilterQuery<Document<T>>): Promise<boolean>;
21
21
  }
@@ -17,4 +17,5 @@ export declare class BaseRepository<T, D = Document<T>> implements IBaseReposito
17
17
  update<I>(criteria: FilterQuery<D>, update: I, options: Record<string, unknown>): Promise<T>;
18
18
  delete(criteria: FilterQuery<D>): Promise<boolean>;
19
19
  bulkDelete(criteria: FilterQuery<D>): Promise<number>;
20
+ private mapConditions;
20
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messenger-box/platform-server",
3
- "version": "0.0.1-alpha.58",
3
+ "version": "0.0.1-alpha.63",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -38,7 +38,7 @@
38
38
  }
39
39
  },
40
40
  "dependencies": {
41
- "@messenger-box/core": "0.0.1-alpha.58",
41
+ "@messenger-box/core": "0.0.1-alpha.63",
42
42
  "aws-sdk": "^2.978.0"
43
43
  },
44
44
  "peerDependencies": {
@@ -58,5 +58,5 @@
58
58
  "typescript": {
59
59
  "definition": "lib/index.d.ts"
60
60
  },
61
- "gitHead": "023cfad3a2fac8edc6ed51ed19bbd3df98e45dc4"
61
+ "gitHead": "8e5c2541462217e1f687f94546355b7baf8a3778"
62
62
  }