@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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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(
|
|
1584
|
+
old = await this.get(criteria);
|
|
1563
1585
|
if (!old) {
|
|
1564
|
-
throw Error(`(update) No existing record found for update with criteria ${JSON.stringify(
|
|
1586
|
+
throw Error(`(update) No existing record found for update with criteria ${JSON.stringify(criteria)}`);
|
|
1565
1587
|
}
|
|
1566
1588
|
}
|
|
1567
|
-
return this.model.findOneAndUpdate(
|
|
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.
|
|
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.
|
|
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": "
|
|
61
|
+
"gitHead": "8e5c2541462217e1f687f94546355b7baf8a3778"
|
|
62
62
|
}
|