@messenger-box/platform-server 0.0.1-alpha.122 → 0.0.1-alpha.124
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
|
@@ -503,6 +503,12 @@ exports.postResolvers = void 0;
|
|
|
503
503
|
const core_1 = __webpack_require__(/*! @adminide-stack/core */ "@adminide-stack/core");
|
|
504
504
|
const core_2 = __webpack_require__(/*! @messenger-box/core */ "@messenger-box/core");
|
|
505
505
|
const postResolvers = () => ({
|
|
506
|
+
// Temporary fix, until we have extension support in base module
|
|
507
|
+
FileInfo: {
|
|
508
|
+
extension(src) {
|
|
509
|
+
return src.mimeType.split('/')[1];
|
|
510
|
+
},
|
|
511
|
+
},
|
|
506
512
|
Post: {
|
|
507
513
|
editedBy(src, args, { accountService }) {
|
|
508
514
|
return accountService.findAccountById(src.editedBy.toString());
|
|
@@ -539,10 +545,13 @@ const postResolvers = () => ({
|
|
|
539
545
|
__typename: "MachineConfiguration" /* MachineConfiguration */,
|
|
540
546
|
};
|
|
541
547
|
},
|
|
548
|
+
files(src, args, { fileInfoService }) {
|
|
549
|
+
return fileInfoService.getAllWithCount(Object.assign(Object.assign({}, args), { criteria: Object.assign(Object.assign({}, args.criteria), { refType: 'Post', ref: src.id }) }));
|
|
550
|
+
},
|
|
542
551
|
},
|
|
543
552
|
Query: {
|
|
544
|
-
messages(src, { channelId, limit, skip }, { postService, userContext }) {
|
|
545
|
-
|
|
553
|
+
async messages(src, { channelId, limit, skip }, { postService, userContext }) {
|
|
554
|
+
const { data, totalCount } = await postService.getAllWithCount({
|
|
546
555
|
criteria: {
|
|
547
556
|
channel: channelId,
|
|
548
557
|
},
|
|
@@ -553,6 +562,10 @@ const postResolvers = () => ({
|
|
|
553
562
|
value: core_2.ISortEnum.ASC,
|
|
554
563
|
},
|
|
555
564
|
});
|
|
565
|
+
return {
|
|
566
|
+
totalCount,
|
|
567
|
+
data,
|
|
568
|
+
};
|
|
556
569
|
},
|
|
557
570
|
},
|
|
558
571
|
Mutation: {
|
|
@@ -568,23 +581,29 @@ const postResolvers = () => ({
|
|
|
568
581
|
message: messageInput.content,
|
|
569
582
|
editedBy: userContext.accountId,
|
|
570
583
|
channel: messageId.channelId,
|
|
584
|
+
files: messageInput.files,
|
|
571
585
|
});
|
|
572
586
|
},
|
|
573
|
-
sendMessage(src, { channelId, messageInput }, { postService, userContext }) {
|
|
574
|
-
|
|
587
|
+
async sendMessage(src, { channelId, messageInput }, { postService, userContext }) {
|
|
588
|
+
const { content, files } = messageInput;
|
|
589
|
+
const { accountId } = userContext;
|
|
590
|
+
const postRes = await postService.create({
|
|
575
591
|
channel: channelId,
|
|
576
|
-
message:
|
|
577
|
-
editedBy:
|
|
578
|
-
author:
|
|
592
|
+
message: content,
|
|
593
|
+
editedBy: accountId,
|
|
594
|
+
author: accountId,
|
|
595
|
+
files: [],
|
|
579
596
|
});
|
|
597
|
+
const uploadedFiles = await Promise.all(files.map((file) => postService.uploadImg(file, accountId, postRes.id)));
|
|
598
|
+
return postService.update(postRes.id, {
|
|
599
|
+
files: uploadedFiles,
|
|
600
|
+
});
|
|
601
|
+
},
|
|
602
|
+
uploadFile(src, { files, postId }, { postService, userContext }) {
|
|
603
|
+
const res = [];
|
|
604
|
+
files.map((file) => res.push(postService.uploadImg(file, userContext.accountId, postId)));
|
|
605
|
+
return res;
|
|
580
606
|
},
|
|
581
|
-
// pinMessage(src , { messageId , messageInput} , {postService , userContext}) {
|
|
582
|
-
// return postService.update(messageId.messageId, {
|
|
583
|
-
// isPinned : messageInput.isPinned,
|
|
584
|
-
// pinnedBy : userContext.accountId,
|
|
585
|
-
// channel : messageId.channelId
|
|
586
|
-
// } as any)
|
|
587
|
-
// }
|
|
588
607
|
},
|
|
589
608
|
});
|
|
590
609
|
exports.postResolvers = postResolvers;
|
|
@@ -692,6 +711,19 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
692
711
|
|
|
693
712
|
/***/ }),
|
|
694
713
|
|
|
714
|
+
/***/ "./src/graphql/schema/extended.graphql":
|
|
715
|
+
/*!*********************************************!*\
|
|
716
|
+
!*** ./src/graphql/schema/extended.graphql ***!
|
|
717
|
+
\*********************************************/
|
|
718
|
+
/*! exports provided: default */
|
|
719
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
720
|
+
|
|
721
|
+
"use strict";
|
|
722
|
+
__webpack_require__.r(__webpack_exports__);
|
|
723
|
+
/* harmony default export */ __webpack_exports__["default"] = ("interface IFileRef{\n id:ID!\n}\n\nextend enum FileRefType{\n Post\n}\n");
|
|
724
|
+
|
|
725
|
+
/***/ }),
|
|
726
|
+
|
|
695
727
|
/***/ "./src/graphql/schema/index.ts":
|
|
696
728
|
/*!*************************************!*\
|
|
697
729
|
!*** ./src/graphql/schema/index.ts ***!
|
|
@@ -706,6 +738,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
706
738
|
};
|
|
707
739
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
708
740
|
exports.schema = void 0;
|
|
741
|
+
const extended_graphql_1 = __importDefault(__webpack_require__(/*! ./extended.graphql */ "./src/graphql/schema/extended.graphql"));
|
|
709
742
|
const base_graphql_1 = __importDefault(__webpack_require__(/*! ./base.graphql */ "./src/graphql/schema/base.graphql"));
|
|
710
743
|
const channel_graphql_1 = __importDefault(__webpack_require__(/*! ./channel.graphql */ "./src/graphql/schema/channel.graphql"));
|
|
711
744
|
const channel_member_graphql_1 = __importDefault(__webpack_require__(/*! ./channel-member.graphql */ "./src/graphql/schema/channel-member.graphql"));
|
|
@@ -715,6 +748,7 @@ const preferences_graphql_1 = __importDefault(__webpack_require__(/*! ./preferen
|
|
|
715
748
|
const users_graphql_1 = __importDefault(__webpack_require__(/*! ./users.graphql */ "./src/graphql/schema/users.graphql"));
|
|
716
749
|
const reaction_graphql_1 = __importDefault(__webpack_require__(/*! ./reaction.graphql */ "./src/graphql/schema/reaction.graphql"));
|
|
717
750
|
const schema = [
|
|
751
|
+
extended_graphql_1.default,
|
|
718
752
|
base_graphql_1.default,
|
|
719
753
|
channel_graphql_1.default,
|
|
720
754
|
channel_member_graphql_1.default,
|
|
@@ -751,7 +785,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
751
785
|
|
|
752
786
|
"use strict";
|
|
753
787
|
__webpack_require__.r(__webpack_exports__);
|
|
754
|
-
/* harmony default export */ __webpack_exports__["default"] = ("type Post implements IBaseRepo {\n id:
|
|
788
|
+
/* harmony default export */ __webpack_exports__["default"] = ("type Post implements IBaseRepo & IFileRef {\n id: ID!\n author: UserAccount\n channel: Channel\n\n rootId: String\n parentId: String\n originalId: String\n\n \"\"\" Post sent by server e.g. User joined channel \"\"\"\n fromServer: Boolean\n\n message: String\n type: String\n props: AnyObject\n hashTags: String\n\n filenames: [String]\n fields: [String]\n reactions: [Reaction]\n files(criteria:AnyObject, limit:Int, skip:Int, sort:Sort):FilesInfo!\n editedBy: UserAccount\n deletedBy: UserAccount\n createdAt: DateTime\n updatedAt: DateTime\n deletedAt: DateTime\n\n propsConfiguration: MachineConfiguration\n}\n\ninput MessageInput {\n content: String!\n userRef: [String] #userId\n channelRef: [String] #channelId\n files: [Upload!]\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 uploadFile( files: [Upload], postId:String!): [String] @isAuthenticated @addAccountContext\n deleteFile(url: String!): Boolean @isAuthenticated @addAccountContext\n}\n\nextend type Subscription {\n chatMessageAdded(channelId: String, directTo: String): Post @isAuthenticated @addAccountContext\n}\n");
|
|
755
789
|
|
|
756
790
|
/***/ }),
|
|
757
791
|
|
|
@@ -1212,15 +1246,47 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
1212
1246
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1213
1247
|
exports.PostService = void 0;
|
|
1214
1248
|
const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
|
|
1249
|
+
const core_1 = __webpack_require__(/*! @messenger-box/core */ "@messenger-box/core");
|
|
1250
|
+
const file_info_core_1 = __webpack_require__(/*! @container-stack/file-info-core */ "@container-stack/file-info-core");
|
|
1215
1251
|
const base_service_1 = __webpack_require__(/*! ./base-service */ "./src/services/base-service.ts");
|
|
1216
1252
|
const constants_1 = __webpack_require__(/*! ../constants */ "./src/constants/index.ts");
|
|
1217
1253
|
let PostService = class PostService extends base_service_1.BaseService {
|
|
1218
|
-
constructor(repository) {
|
|
1254
|
+
constructor(repository, fileInfoService) {
|
|
1219
1255
|
super(repository);
|
|
1256
|
+
this.fileInfoService = fileInfoService;
|
|
1257
|
+
}
|
|
1258
|
+
async createPost(channelId, messageInput, userContext) {
|
|
1259
|
+
const { content, files } = messageInput;
|
|
1260
|
+
const { accountId } = userContext;
|
|
1261
|
+
const postRes = await this.repository.create({
|
|
1262
|
+
channel: channelId,
|
|
1263
|
+
message: content,
|
|
1264
|
+
editedBy: accountId,
|
|
1265
|
+
author: accountId,
|
|
1266
|
+
files: [],
|
|
1267
|
+
});
|
|
1268
|
+
const uploadedFiles = await Promise.all(files.map((file) => this.fileInfoService.create({
|
|
1269
|
+
refType: core_1.IFileRefType.Post,
|
|
1270
|
+
file,
|
|
1271
|
+
createdBy: accountId,
|
|
1272
|
+
ref: postRes.id,
|
|
1273
|
+
})));
|
|
1274
|
+
const fls = uploadedFiles.map((r) => r.id);
|
|
1275
|
+
return this.repository.update(postRes.id, { files: fls });
|
|
1276
|
+
}
|
|
1277
|
+
async uploadImg(file, userId, postId) {
|
|
1278
|
+
const storedImage = await this.fileInfoService.create({
|
|
1279
|
+
refType: core_1.IFileRefType.Post,
|
|
1280
|
+
file,
|
|
1281
|
+
createdBy: userId,
|
|
1282
|
+
ref: postId,
|
|
1283
|
+
});
|
|
1284
|
+
return Promise.resolve(storedImage === null || storedImage === void 0 ? void 0 : storedImage.id);
|
|
1220
1285
|
}
|
|
1221
1286
|
};
|
|
1222
1287
|
PostService = __decorate([
|
|
1223
|
-
__param(0, inversify_1.inject(constants_1.TYPES.PostRepository))
|
|
1288
|
+
__param(0, inversify_1.inject(constants_1.TYPES.PostRepository)),
|
|
1289
|
+
__param(1, inversify_1.inject(file_info_core_1.TYPES.FileInfoService))
|
|
1224
1290
|
], PostService);
|
|
1225
1291
|
exports.PostService = PostService;
|
|
1226
1292
|
|
|
@@ -1501,6 +1567,7 @@ const postModelSchema = new mongoose_1.Schema({
|
|
|
1501
1567
|
hashtags: { type: mongoose_1.Schema.Types.Mixed },
|
|
1502
1568
|
filenames: { type: mongoose_1.Schema.Types.Mixed },
|
|
1503
1569
|
fields: { type: mongoose_1.Schema.Types.String },
|
|
1570
|
+
files: [{ type: mongoose_1.Schema.Types.ObjectId }],
|
|
1504
1571
|
hasReactions: { type: mongoose_1.Schema.Types.Boolean },
|
|
1505
1572
|
}, common_options_1.commonModeSchemaOptions);
|
|
1506
1573
|
common_options_1.addIdVirtualFields(postModelSchema);
|
|
@@ -1926,6 +1993,17 @@ module.exports = require("@common-stack/server-core");
|
|
|
1926
1993
|
|
|
1927
1994
|
/***/ }),
|
|
1928
1995
|
|
|
1996
|
+
/***/ "@container-stack/file-info-core":
|
|
1997
|
+
/*!**************************************************!*\
|
|
1998
|
+
!*** external "@container-stack/file-info-core" ***!
|
|
1999
|
+
\**************************************************/
|
|
2000
|
+
/*! no static exports found */
|
|
2001
|
+
/***/ (function(module, exports) {
|
|
2002
|
+
|
|
2003
|
+
module.exports = require("@container-stack/file-info-core");
|
|
2004
|
+
|
|
2005
|
+
/***/ }),
|
|
2006
|
+
|
|
1929
2007
|
/***/ "@messenger-box/core":
|
|
1930
2008
|
/*!**************************************!*\
|
|
1931
2009
|
!*** external "@messenger-box/core" ***!
|
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-core\"","webpack:///external \"@adminide-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@messenger-box/core\"","webpack:///external \"graphql-iso-date\"","webpack:///external \"inversify\"","webpack:///external \"lodash\"","webpack:///external \"mongoose\""],"names":[],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","export const DEFAULT_NOTIFY_PROPS = {\n desktopNotifyProp: true,\n markUnreadNotifyProp: true,\n pushNotifyProp: true,\n emailNotifyProp: true,\n ignoreChannelMentionsNotifyProp: true,\n};\n","export * from './types';\nexport * from './query.constants';\nexport * from './default-notify-props';\n","export enum PAGINATION_OPTIONS {\n limit = 10,\n skip = 0,\n}\n\nexport const DEFAULT_SORTING = {\n id: 'asc',\n};\n","export const TYPES = {\n BaseRepository: Symbol('BaseRepository'),\n BaseService: Symbol('BaseService'),\n\n ChannelRepository: Symbol('ChannelRepository'),\n PostRepository: Symbol('PostRepository'),\n PostThreadRepository: Symbol('PostThreadRepository'),\n ReactionRepository: Symbol('ReactionRepository'),\n\n ChannelService: Symbol('ChannelService'),\n PostService: Symbol('PostService'),\n PostThreadService: Symbol('PostThreadService'),\n ReactionService: Symbol('ReactionService'),\n};\n","import { ContainerModule, interfaces } from 'inversify';\nimport { ChannelService, PostService, PostThreadService, ReactionService } from '../services';\nimport { TYPES } from '../constants';\nimport {\n IPostService,\n IPostRepository,\n IPostThreadService,\n IPostThreadRepository,\n IChannelRepository,\n IChannelService,\n IReactionService,\n IReactionRepository,\n} from '../interfaces';\nimport { ChannelRepository, PostRepository, PostThreadRepository, ReactionRepository } from '../store';\n\n/**\n * Local services and exposed micro services to serve remote connections.\n * Operates within in the Gateway.\n *\n * @param settings Settings\n */\nexport const localContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetNamed('proxy');\n });\n\n/**\n * Operates external to the Gateway. Usually a broker listen to calls and invoke this service\n * local to the micro container.\n *\n * @param settings Settings\n */\nexport const externalContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetIsDefault();\n });\n","import { interfaces } from 'inversify';\nimport { IChannelService, IPostService, IPostThreadService, IReactionService, IServices } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport const contextServicesFromContainer = (container: interfaces.Container): IServices => ({\n channelService: container.get<IChannelService>(TYPES.ChannelService),\n postService: container.get<IPostService>(TYPES.PostService),\n postThreadService: container.get<IPostThreadService>(TYPES.PostThreadService),\n reactionService: container.get<IReactionService>(TYPES.ReactionService),\n});\n","export * from './containers';\nexport * from './context-services-from-container';\n","export * from './schema';\nexport * from './resolvers';\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelMemberResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { IChannel, IResolvers, IRoomType } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelResolvers = (): IResolvers<IContext> => ({\n Query: {\n channelByName(src, { name }, { channelService, userContext }) {\n return channelService.getByName(userContext.teamId, name) as Promise<IChannel>;\n },\n channels(src, _, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.getChannels(teamId, accountId, false, new Date().getTime()) as Promise<IChannel[]>;\n },\n channelsByUser(src, _, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.getAll({\n criteria: {\n creator: accountId,\n },\n }) as Promise<IChannel[]>;\n },\n directChannel(src, { id }, { channelService, userContext }) {\n return channelService.get({\n criteria: {\n id,\n user: userContext.accountId,\n type: IRoomType.DIRECT,\n },\n }) as Promise<IChannel>;\n },\n },\n Mutation: {\n createChannel(src, { name, description }, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.saveChannel({\n type: IRoomType.CHANNEL,\n creator: accountId,\n title: name,\n topic: name,\n team: teamId,\n description,\n }) as Promise<IChannel>;\n },\n\n addMemberToChannel(src, { channelId, memberId }, { channelService, userContext }) {\n return channelService.addMemberToChannel(channelId, memberId) as Promise<IChannel>;\n },\n\n createDirectChannel(src, { receiver, displayName }, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.createDirectChannel({\n sender: accountId,\n receiver,\n displayName,\n }) as Promise<IChannel>;\n },\n hideChannel(src, { id }, { channelService }) {\n return channelService.hideChannel(id);\n },\n leaveChannel(src, { id }, { channelService }) {\n return channelService.leaveChannel(id);\n },\n deleteChannel(src, { id }, { channelService }) {\n return channelService.deleteChannel(id);\n },\n },\n});\n","import { primitiveResolvers } from './primitive-resolvers';\nimport { channelResolvers } from './channel';\nimport { channelMemberResolvers } from './channel-member';\nimport { postResolvers } from './post';\nimport { postThreadResolvers } from './post-thread';\nimport { reactionResolvers } from './reaction';\n\nexport const messengerResolvers = [\n primitiveResolvers,\n channelResolvers,\n channelMemberResolvers,\n postResolvers,\n postThreadResolvers,\n reactionResolvers,\n];\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const postThreadResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { generateUri, IClientCacheTypeNames, IConfigurationModel } from '@adminide-stack/core';\nimport { 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 deletedBy(src, args, { accountService }) {\n return accountService.findAccountById(src?.deletedBy.toString());\n },\n author(src, args, { accountService }) {\n const author = src.author?.toString();\n if (author) {\n return accountService.findAccountById(author);\n }\n return accountService.findAccountById(src.editedBy.toString());\n },\n channel(src, args, { channelService }) {\n return channelService.get(src.channel.toString());\n },\n propsConfiguration(src, args, { configurationService }) {\n const resource = generateUri('posts' as any, { _id: src.id }, 'props');\n let data = '{}';\n try {\n data = JSON.stringify(src.props);\n } catch (err) {\n console.log('---Errr---', err);\n }\n const machineModel = configurationService.parser(resource.toString(), data) as IConfigurationModel;\n return {\n resource,\n contents: machineModel.contents,\n overrides: machineModel.overrides,\n keys: machineModel.keys,\n __typename: IClientCacheTypeNames.MachineConfiguration,\n };\n },\n },\n Query: {\n messages(src, { channelId, limit, skip }, { postService, userContext }) {\n return postService.getAllWithCount({\n criteria: {\n channel: channelId,\n },\n limit,\n skip,\n sort: {\n key: 'createdAt',\n value: ISortEnum.ASC,\n },\n });\n },\n },\n Mutation: {\n deleteMessage(src, { messageId }, { postService }) {\n const { channelId, messageId: id } = messageId;\n return postService.delete({\n channel: channelId,\n id,\n });\n },\n editMessage(src, { messageId, messageInput }, { postService, userContext }) {\n return postService.update(messageId.messageId, {\n message: messageInput.content,\n editedBy: userContext.accountId,\n channel: messageId.channelId,\n } as any);\n },\n sendMessage(src, { channelId, messageInput }, { postService, userContext }) {\n return postService.create({\n channel: channelId,\n message: messageInput.content,\n editedBy: userContext.accountId,\n author: userContext.accountId,\n } as any);\n },\n // pinMessage(src , { messageId , messageInput} , {postService , userContext}) {\n // return postService.update(messageId.messageId, {\n // isPinned : messageInput.isPinned,\n // pinnedBy : userContext.accountId,\n // channel : messageId.channelId\n // } as any)\n // }\n },\n});\n","import { GraphQLDate, GraphQLTime, GraphQLDateTime } from 'graphql-iso-date';\n\nexport const primitiveResolvers = () => ({\n Date: GraphQLDate,\n Time: GraphQLTime,\n DateTime: GraphQLDateTime,\n});\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const reactionResolvers = (): IResolvers<IContext> => ({\n Query: {\n getPostReactions(src, { message }, { reactionService, userContext }) {\n return reactionService.getAll({\n criteria: {\n post: message,\n user: userContext.accountId,\n },\n });\n },\n },\n Mutation: {\n addReactionToMessage(src, { reaction }, { reactionService, userContext }) {\n return reactionService.create({\n ...reaction,\n user: userContext.accountId,\n });\n },\n updateReactionToMessage(src, { reaction, id }, { reactionService }) {\n return reactionService.update(id, { reaction });\n },\n removeReactionFromMessage(src, { id }, { reactionService }) {\n return reactionService.delete(id);\n },\n },\n});\n","export default \"interface IBaseRepo {\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput Sort{\\n key: String!,\\n value: SortEnum!,\\n}\\n\\nenum SortEnum{\\n ASC,\\n DESC\\n}\";","export default \"type ChannelMember {\\n id: ID!\\n user: String!\\n roles: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n explicitRoles: String\\n schemeAdmin: Boolean\\n lastViewedAt: Int\\n updatedAt: DateTime,\\n CreatedAt: DateTime,\\n}\\n\\ninput ChannelMemberInput {\\n userId: String!\\n roles: String\\n notifyProps: AnyObject\\n schemeGuest: Boolean\\n schemeUser: Boolean\\n schemeAdmin: Boolean\\n explicitRoles: String\\n}\\n\";","export default \"type Channel implements IBaseRepo {\\n id: String!\\n title: String\\n topic: String\\n purpose: String\\n description: String\\n displayName: String\\n team: AccountTeam\\n lastPostAt: DateTime\\n totalMsgCount: Int\\n totalMsgCountRoot: Int\\n creator: UserAccount\\n members: [ChannelMember]\\n type: String\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ntype ChannelUnread {\\n teamId: String\\n channelId: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n}\\n\\n\\ninput ChannelFilterInput {\\n nameFilter: String\\n privacy: ChannelPrivacy\\n joinedChannels: Boolean\\n storyBy: ChannelSort\\n}\\n\\ninput ChannelNameAndDirect {\\n name: String!\\n direct: Boolean!\\n}\\n\\nenum ChannelSort {\\n NAME\\n NUMBER_OF_MESSAGES\\n}\\n\\nenum ChannelPrivacy {\\n PRIVATE\\n PUBLIC\\n ALL\\n}\\n\\nenum RoomType {\\n CHANNEL\\n DIRECT\\n GROUP\\n PRIVATE\\n VISITOR\\n}\\n\\nextend type Query {\\n channelByName(name: String!): Channel @addAccountContext @isAuthenticated\\n channels(filter: ChannelFilterInput = {\\n privacy: ALL,\\n joinedChannels: false,\\n sortyBy: NAME\\n }): [Channel] @addAccountContext @isAuthenticated\\n channelsByUser: [Channel] @addAccountContext @isAuthenticated\\n directChannel(id: ID!): Channel @addAccountContext @isAuthenticated\\n}\\n\\nextend type Mutation {\\n createChannel(\\n name: String!,\\n description:String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n addMemberToChannel(\\n channelId: String!,\\n memberId: String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n createDirectChannel(\\n receiver: [ID]!\\n displayName: String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n hideChannel(id: ID!): Boolean @isAuthenticated\\n\\n leaveChannel(id: ID!): Boolean @isAuthenticated\\n\\n deleteChannel(id: ID!): Boolean @isAuthenticated\\n}\\n\";","import baseSchema from './base.graphql';\nimport channelSchema from './channel.graphql';\nimport channelMember from './channel-member.graphql';\nimport postSchema from './post.graphql';\nimport postThread from './post-thread.graphql';\nimport preferencesSchema from './preferences.graphql';\nimport usersSchema from './users.graphql';\nimport reactionSchema from './reaction.graphql';\n\nconst schema = [\n baseSchema,\n channelSchema,\n channelMember,\n postSchema,\n postThread,\n preferencesSchema,\n usersSchema,\n reactionSchema,\n].join('\\n');\n\nexport { schema };\n","export default \"type PostThread{\\n post: Post,\\n channel: Channel,\\n replyCount: Int,\\n lastReplyAt: DateTime,\\n participants:[UserAccount]\\n}\\n\";","export default \"type Post implements IBaseRepo {\\n id: String\\n author: UserAccount\\n channel: Channel\\n\\n rootId: String\\n parentId: String\\n originalId: String\\n\\n \\\"\\\"\\\" Post sent by server e.g. User joined channel \\\"\\\"\\\"\\n fromServer: Boolean\\n\\n message: String\\n type: String\\n props: AnyObject\\n hashTags: String\\n\\n filenames: [String]\\n fields: [String]\\n reactions: [Reaction]\\n\\n editedBy: UserAccount\\n deletedBy: UserAccount\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n\\n propsConfiguration: MachineConfiguration\\n}\\n\\nextend enum FileRefType {\\n Post\\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 \"enum MessengerUserStatus {\\n ONLINE\\n AWAY\\n BUSY\\n INVISIBLE\\n}\\n\\ntype MessengerUser implements IUser {\\n id: ID!\\n username: String\\n email: String\\n status: MessengerUserStatus\\n avatar: String\\n name: String\\n lastLogin: String\\n channels: [Channel]\\n directMessages: [Channel]\\n}\\n\\nextend type Query{\\n usersToChat(auth0Id:String!):[UserAccount] @isAuthenticated @addAccountContext\\n currentUser(auth0Id:String!):UserAccount @isAuthenticated @addAccountContext\\n}\\n\";","/* eslint-disable import/no-extraneous-dependencies */\nimport { Feature } from '@common-stack/server-core';\nimport MessengerModule from './module';\n\nexport * from './constants';\nexport default new Feature(MessengerModule);\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 } from '@adminide-stack/account-api-server';\nimport { TYPES as ADMINIDE_TYPES } from '@adminide-stack/account-api-core';\nimport { IConfigurationService } from '@adminide-stack/platform-server';\nimport { ServerTypes } from '@adminide-stack/core';\nimport { Schema } from 'mongoose';\nimport { BaseService } from './base-service';\nimport { DEFAULT_NOTIFY_PROPS, TYPES } from '../constants';\nimport {\n IAddMemberParams,\n IChannelRepository,\n ICreateDirectChannelParams,\n INotificationProps,\n IPostService,\n ISaveChannelParams,\n ISaveDirectChannelParams,\n} from '../interfaces';\n\nexport class ChannelService extends BaseService<IChannel, Omit<IChannel, 'id'>> {\n constructor(\n @inject(TYPES.ChannelRepository)\n readonly repository: IChannelRepository,\n @inject(ADMINIDE_TYPES.IAccountService)\n private readonly accountService: IAccountService,\n @inject(ADMINIDE_TYPES.ITeamService)\n private readonly teamsService: ITeamService,\n @inject(TYPES.PostService)\n private readonly postService: IPostService,\n @inject(ServerTypes.IConfigurationService)\n private readonly configService: IConfigurationService,\n ) {\n super(repository);\n }\n\n private static getDmNameFromIds(senderId: string, receiverId: string) {\n return `${senderId}__${receiverId}`;\n }\n\n private static get defaultNotifyProps(): INotificationProps {\n // #Todo: To be moved to settings\n return DEFAULT_NOTIFY_PROPS;\n }\n\n private getMaxChannelsPerTeam(teamId: string): Promise<number> {\n // #Todo: Get Max Channel per team from Team settings\n return Promise.resolve(10);\n }\n\n private async getCurrentChannelCountPerTeam(team: string) {\n return this.repository.count({\n team,\n type: IRoomType.CHANNEL,\n });\n }\n\n async createDirectChannel(data: ICreateDirectChannelParams): Promise<IChannel | Error> {\n const { sender, receiver, displayName } = data;\n const chlMember = [\n {\n user: sender,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n ];\n receiver.forEach((re) => {\n chlMember.push({\n user: re,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n });\n });\n const channelPayload: ISaveDirectChannelParams = {\n title: sender.split('').reverse().join(''),\n type: IRoomType.DIRECT,\n creator: sender,\n members: chlMember,\n displayName,\n };\n return this.saveDirectChannel(channelPayload);\n }\n\n async saveDirectChannel(channel: ISaveDirectChannelParams): Promise<IChannel | Error> {\n const { type, deletedAt } = channel;\n if (deletedAt) {\n return new Error('Deleted Channel can not be saved');\n }\n if (type !== IRoomType.DIRECT) {\n return new Error('Only direct channels are allowed');\n }\n return this.repository.create(channel);\n }\n\n async addMemberToChannel(channelId, memberId): Promise<IChannel | Error> {\n // const { channelId, memberId } = data;\n // console.log('==============================', channelId);\n const resData = await this.repository\n .get({ id: channelId })\n .then(async (res) => {\n const mebs = res.members;\n mebs.push({\n id: '',\n user: memberId,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n });\n const objToUpdate = res;\n objToUpdate.members = mebs;\n const finalResult = await this.repository\n .update({ id: channelId }, objToUpdate, { overwrite: true })\n .then((response) => response)\n .catch((error) => error);\n return finalResult;\n })\n .catch((err) => err);\n return resData;\n }\n\n async saveChannel(data: ISaveChannelParams): Promise<IChannel | Error> {\n const { type, team, creator } = data;\n if (type !== IRoomType.CHANNEL) {\n return new Error('Invalid Channel Type');\n }\n const maxChannels = await this.getMaxChannelsPerTeam(team);\n const currentChannels = await this.getCurrentChannelCountPerTeam(team);\n const canAddNewChannel = currentChannels < maxChannels;\n if (!canAddNewChannel) {\n return Error(`Only max of ${maxChannels} allowed`);\n }\n const channelPayload = {\n ...data,\n members: [\n {\n user: creator,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n ],\n };\n return this.repository.create(channelPayload);\n }\n\n async getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error> {\n const channel: IChannel = await this.repository.get({\n id: channelId,\n members: { user: userId },\n });\n const { members, team, id } = channel;\n const member = members.find((i) => i.user === userId);\n const msgCount = channel.totalMsgCount - member.msgCount;\n const msgCountRoot = channel.totalMsgCountRoot - member.msgCountRoot;\n const { notifyProps, mentionCountRoot, mentionCount } = member;\n\n return {\n channelId: id,\n teamId: team.toString(),\n msgCount,\n msgCountRoot,\n mentionCount,\n notifyProps,\n mentionCountRoot,\n };\n }\n\n async getPinnedPosts(channelId: string): Promise<IPost[] | Error> {\n const posts = await this.postService.getAll({\n criteria: {\n channelId,\n isPinned: true,\n },\n sort: {\n key: 'CreatAt',\n value: ISortEnum.ASC,\n },\n });\n const replyCounts = await Promise.all(\n posts.map((post) => this.postService.count({ rootId: post.rootId || post.id })),\n );\n return posts.reduce((acc, curr, index) => [...acc, { ...curr, replyCount: replyCounts[index] }], []);\n }\n\n restore(channelId: string, time: Date): Promise<IChannel> {\n return this.repository.update(\n { id: channelId },\n {\n deletedAt: time,\n },\n );\n }\n\n getByName(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n });\n }\n\n getByNameIncludeDeleted(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n deletedAt: true,\n });\n }\n\n getByNames(team: string, titles: string[]): Promise<IChannel[] | Error> {\n return this.getAll({\n criteria: {\n team,\n title: { $in: titles },\n },\n });\n }\n\n getChannelCounts(team: string, user: string): Promise<any> {\n return this.count({\n team,\n members: { user },\n });\n }\n\n getChannels(\n team: string,\n user: string,\n includeDeleted: boolean,\n lastDeleteAt: number,\n ): Promise<IChannel[] | Error> {\n return this.repository.getAll({\n // criteria: {\n // team,\n // members: { user },\n // },\n });\n }\n\n deleteChannel(id: string): Promise<boolean | Error> {\n return this.repository.delete({ id });\n }\n}\n","export * from './channel-service';\nexport * from './post-service';\nexport * from './post-thread-service';\nexport * from './reaction-service';\n","import { inject } from 'inversify';\nimport { IPost } from '@messenger-box/core';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { PostRepository } from '../store';\n\nexport class PostService extends BaseService<IPost> {\n constructor(\n @inject(TYPES.PostRepository)\n repository: PostRepository,\n ) {\n super(repository);\n }\n}\n","import { IPostThread } from '@messenger-box/core';\nimport { injectable, inject } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IPostThreadRepository, IPostThreadService } from '../interfaces';\n\n@injectable()\nexport class PostThreadService extends BaseService<IPostThread> implements IPostThreadService {\n constructor(\n @inject(TYPES.PostThreadRepository)\n readonly repository: IPostThreadRepository,\n ) {\n super(repository);\n }\n}\n","import { IReaction, IReactionInput } from '@messenger-box/core';\nimport { inject, injectable } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IReactionRepository, IReactionService, IReactionServiceInput } from '../interfaces';\n\n@injectable()\nexport class ReactionService\n extends BaseService<IReaction, IReactionServiceInput, Partial<IReactionInput>>\n implements IReactionService\n{\n constructor(\n @inject(TYPES.ReactionRepository)\n readonly reactionRepository: IReactionRepository,\n ) {\n super(reactionRepository);\n }\n}\n","export * from './repositories';\n","import { Connection, Document, Model, Schema } from 'mongoose';\nimport { IChannel, IRoomType } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IChannelModel = Document<IChannel>;\n\nconst channelModelSchema = new Schema(\n {\n type: {\n type: Schema.Types.String,\n enum: [IRoomType.CHANNEL, IRoomType.DIRECT, IRoomType.GROUP, IRoomType.PRIVATE, IRoomType.VISITOR],\n required: true,\n },\n members: [\n new Schema(\n {\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n roles: { type: Schema.Types.String },\n msgCount: { type: Schema.Types.Number },\n mentionCount: { type: Schema.Types.Number },\n mentionCountRoot: { type: Schema.Types.Number },\n msgCountRoot: { type: Schema.Types.Number },\n notifyProps: { type: Schema.Types.Mixed },\n explicitRoles: { type: Schema.Types.String },\n schemeAdmin: { type: Schema.Types.String },\n lastViewedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n },\n commonModeSchemaOptions,\n ),\n ],\n deletedAt: { type: Schema.Types.Date },\n lastPostAt: { type: Schema.Types.Date },\n totalMsgCount: { type: Schema.Types.Number },\n totalMsgCountRoot: { type: Schema.Types.Number },\n team: { type: Schema.Types.ObjectId, ref: 'team' },\n title: { type: Schema.Types.String },\n displayName: { type: Schema.Types.String },\n description: { type: Schema.Types.String },\n purpose: { type: Schema.Types.String },\n creator: { type: Schema.Types.ObjectId, ref: 'accounts' },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(channelModelSchema);\n\nexport type ChannelModelType = Model<IChannelModel>;\nexport const ChannelModelFunc: (db: Connection) => ChannelModelType = (db) =>\n db.model<IChannelModel>('channel', channelModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { Schema } from 'mongoose';\n\nexport const commonModeSchemaOptions = {\n timestamps: true,\n toJSON: {\n virtuals: true,\n },\n toObject: {\n virtuals: true,\n getters: true,\n transform(doc, ret) {\n delete ret.__v;\n delete ret._id;\n },\n },\n};\n\nexport const addIdVirtualFields = (schema: Schema) => {\n schema.set('toJSON', {\n virtuals: true,\n });\n return schema;\n};\n","export * from './channel';\nexport * from './post';\nexport * from './post-thread';\nexport * from './reaction';\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPostThread } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IThreadsModel = Document<IPostThread>;\n\nconst postThreadModelSchema = new Schema(\n {\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n replyCount: { type: Schema.Types.Number },\n lastReplyAt: { type: Schema.Types.Date },\n participants: [{ type: Schema.Types.ObjectId, ref: 'accounts' }],\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postThreadModelSchema);\n\nexport type PostThreadModelType = Model<IThreadsModel>;\nexport const PostThreadModelFunc: (db: Connection) => PostThreadModelType = (db) =>\n db.model<IThreadsModel>('post-threads', postThreadModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPost } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IPostModel = Document<IPost>;\n\nconst postModelSchema = new Schema(\n {\n createdAt: { type: Schema.Types.Date },\n editedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n editedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\n deletedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n rootId: { type: Schema.Types.String },\n parentId: { type: Schema.Types.String },\n originalId: { type: Schema.Types.String },\n message: { type: Schema.Types.String },\n type: { type: Schema.Types.String },\n props: { type: Schema.Types.Mixed },\n hashtags: { type: Schema.Types.Mixed },\n filenames: { type: Schema.Types.Mixed },\n fields: { type: Schema.Types.String },\n 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-core\");","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/extended.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-core\"","webpack:///external \"@adminide-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@container-stack/file-info-core\"","webpack:///external \"@messenger-box/core\"","webpack:///external \"graphql-iso-date\"","webpack:///external \"inversify\"","webpack:///external \"lodash\"","webpack:///external \"mongoose\""],"names":[],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;AClFa,4BAAoB,GAAG;IAChC,iBAAiB,EAAE,IAAI;IACvB,oBAAoB,EAAE,IAAI;IAC1B,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,+BAA+B,EAAE,IAAI;CACxC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACNF,sFAAwB;AACxB,0GAAkC;AAClC,oHAAuC;;;;;;;;;;;;;;;;ACFvC,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,8DAAU;IACV,2DAAQ;AACZ,CAAC,EAHW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAG7B;AAEY,uBAAe,GAAG;IAC3B,EAAE,EAAE,KAAK;CACZ,CAAC;;;;;;;;;;;;;;;;ACPW,aAAK,GAAG;IACjB,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAElC,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAEhD,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;CAC7C,CAAC;;;;;;;;;;;;;;;;ACbF,sEAAwD;AACxD,qFAA8F;AAC9F,wFAAqC;AAWrC,4EAAuG;AAEvG;;;;;GAKG;AACI,MAAM,oBAAoB,GAA6C,CAAC,QAAQ,EAAE,EAAE,CACvF,IAAI,2BAAe,CAAC,CAAC,IAAqB,EAAE,EAAE;IAC1C,IAAI,CAAqB,iBAAK,CAAC,iBAAiB,CAAC;SAC5C,EAAE,CAAC,yBAAiB,CAAC;SACrB,gBAAgB,EAAE;SAClB,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,CAAkB,iBAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,sBAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3G,IAAI,CAAwB,iBAAK,CAAC,oBAAoB,CAAC;SAClD,EAAE,CAAC,4BAAoB,CAAC;SACxB,gBAAgB,EAAE;SAClB,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,CAAsB,iBAAK,CAAC,kBAAkB,CAAC;SAC9C,EAAE,CAAC,0BAAkB,CAAC;SACtB,gBAAgB,EAAE;SAClB,eAAe,CAAC,OAAO,CAAC,CAAC;IAE9B,6DAA6D;IAC7D,aAAa;IACb,IAAI,CAAkB,iBAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,yBAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3G,IAAI,CAAe,iBAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,sBAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAClG,IAAI,CAAqB,iBAAK,CAAC,iBAAiB,CAAC;SAC5C,EAAE,CAAC,4BAAiB,CAAC;SACrB,gBAAgB,EAAE;SAClB,eAAe,CAAC,OAAO,CAAC,CAAC;IAE9B,IAAI,CAAmB,iBAAK,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,0BAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAClH,CAAC,CAAC,CAAC;AA1BM,4BAAoB,wBA0B1B;AAEP;;;;;GAKG;AACI,MAAM,uBAAuB,GAA6C,CAAC,QAAQ,EAAE,EAAE,CAC1F,IAAI,2BAAe,CAAC,CAAC,IAAqB,EAAE,EAAE;IAC1C,IAAI,CAAqB,iBAAK,CAAC,iBAAiB,CAAC;SAC5C,EAAE,CAAC,yBAAiB,CAAC;SACrB,gBAAgB,EAAE;SAClB,mBAAmB,EAAE,CAAC;IAC3B,IAAI,CAAkB,iBAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,sBAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAExG,IAAI,CAAwB,iBAAK,CAAC,oBAAoB,CAAC;SAClD,EAAE,CAAC,4BAAoB,CAAC;SACxB,gBAAgB,EAAE;SAClB,mBAAmB,EAAE,CAAC;IAE3B,IAAI,CAAsB,iBAAK,CAAC,kBAAkB,CAAC;SAC9C,EAAE,CAAC,0BAAkB,CAAC;SACtB,gBAAgB,EAAE;SAClB,mBAAmB,EAAE,CAAC;IAE3B,6DAA6D;IAC7D,aAAa;IACb,IAAI,CAAkB,iBAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,yBAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAExG,IAAI,CAAe,iBAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,sBAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAE/F,IAAI,CAAqB,iBAAK,CAAC,iBAAiB,CAAC;SAC5C,EAAE,CAAC,4BAAiB,CAAC;SACrB,gBAAgB,EAAE;SAClB,mBAAmB,EAAE,CAAC;IAE3B,IAAI,CAAmB,iBAAK,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,0BAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC,mBAAmB,EAAE,CAAC;AAC/G,CAAC,CAAC,CAAC;AA9BM,+BAAuB,2BA8B7B;;;;;;;;;;;;;;;;ACnFP,wFAAqC;AAE9B,MAAM,4BAA4B,GAAG,CAAC,SAA+B,EAAa,EAAE,CAAC,CAAC;IACzF,cAAc,EAAE,SAAS,CAAC,GAAG,CAAkB,iBAAK,CAAC,cAAc,CAAC;IACpE,WAAW,EAAE,SAAS,CAAC,GAAG,CAAe,iBAAK,CAAC,WAAW,CAAC;IAC3D,iBAAiB,EAAE,SAAS,CAAC,GAAG,CAAqB,iBAAK,CAAC,iBAAiB,CAAC;IAC7E,eAAe,EAAE,SAAS,CAAC,GAAG,CAAmB,iBAAK,CAAC,eAAe,CAAC;CAC1E,CAAC,CAAC;AALU,oCAA4B,gCAKtC;;;;;;;;;;;;;;;;;;;;;;;;;ACTH,iGAA6B;AAC7B,2IAAkD;;;;;;;;;;;;;;;;;;;;;;;;;ACDlD,4FAAyB;AACzB,kGAA4B;;;;;;;;;;;;;;;;ACErB,MAAM,sBAAsB,GAAG,GAAyB,EAAE,CAAC,CAAC;IAC/D,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE;CACf,CAAC,CAAC;AAHU,8BAAsB,0BAGhC;;;;;;;;;;;;;;;;ACNH,qFAAsE;AAG/D,MAAM,gBAAgB,GAAG,GAAyB,EAAE,CAAC,CAAC;IACzD,KAAK,EAAE;QACH,aAAa,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;YACxD,OAAO,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAsB,CAAC;QACnF,CAAC;QACD,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;YAC5C,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;YAC1C,OAAO,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAwB,CAAC;QAC7G,CAAC;QACD,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;YAClD,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;YAClC,OAAO,cAAc,CAAC,MAAM,CAAC;gBACzB,QAAQ,EAAE;oBACN,OAAO,EAAE,SAAS;iBACrB;aACJ,CAAwB,CAAC;QAC9B,CAAC;QACD,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;YACtD,OAAO,cAAc,CAAC,GAAG,CAAC;gBACtB,QAAQ,EAAE;oBACN,EAAE;oBACF,IAAI,EAAE,WAAW,CAAC,SAAS;oBAC3B,IAAI,EAAE,gBAAS,CAAC,MAAM;iBACzB;aACJ,CAAsB,CAAC;QAC5B,CAAC;KACJ;IACD,QAAQ,EAAE;QACN,aAAa,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;YACrE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;YAC1C,OAAO,cAAc,CAAC,WAAW,CAAC;gBAC9B,IAAI,EAAE,gBAAS,CAAC,OAAO;gBACvB,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,MAAM;gBACZ,WAAW;aACd,CAAsB,CAAC;QAC5B,CAAC;QAED,kBAAkB,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;YAC5E,OAAO,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAsB,CAAC;QACvF,CAAC;QAED,mBAAmB,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;YAC/E,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;YAClC,OAAO,cAAc,CAAC,mBAAmB,CAAC;gBACtC,MAAM,EAAE,SAAS;gBACjB,QAAQ;gBACR,WAAW;aACd,CAAsB,CAAC;QAC5B,CAAC;QACD,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE;YACvC,OAAO,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE;YACxC,OAAO,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE;YACzC,OAAO,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;KACJ;CACJ,CAAC,CAAC;AA9DU,wBAAgB,oBA8D1B;;;;;;;;;;;;;;;;ACjEH,iIAA2D;AAC3D,6FAA6C;AAC7C,kHAA0D;AAC1D,oFAAuC;AACvC,yGAAoD;AACpD,gGAA+C;AAElC,0BAAkB,GAAG;IAC9B,wCAAkB;IAClB,0BAAgB;IAChB,uCAAsB;IACtB,oBAAa;IACb,iCAAmB;IACnB,4BAAiB;CACpB,CAAC;;;;;;;;;;;;;;;;ACXK,MAAM,mBAAmB,GAAG,GAAyB,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE;CACf,CAAC,CAAC;AAHU,2BAAmB,uBAG7B;;;;;;;;;;;;;;;;ACNH,uFAA+F;AAC/F,qFAAmF;AAG5E,MAAM,aAAa,GAAG,GAAyB,EAAE,CAAC,CAAC;IACtD,gEAAgE;IAChE,QAAQ,EAAE;QACN,SAAS,CAAC,GAAG;YACT,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;KACJ;IACD,IAAI,EAAE;QACF,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE;YAClC,OAAO,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE;YACnC,OAAO,cAAc,CAAC,eAAe,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE;;YAChC,MAAM,MAAM,GAAG,SAAG,CAAC,MAAM,0CAAE,QAAQ,EAAE,CAAC;YACtC,IAAI,MAAM,EAAE;gBACR,OAAO,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;aACjD;YACD,OAAO,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE;YACjC,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,oBAAoB,EAAE;YAClD,MAAM,QAAQ,GAAG,kBAAW,CAAC,OAAc,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACvE,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,IAAI;gBACA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACpC;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;aAClC;YACD,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAwB,CAAC;YACnG,OAAO;gBACH,QAAQ;gBACR,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,UAAU,mDAA4C;aACzD,CAAC;QACN,CAAC;QACD,KAAK,CAAC,GAAG,EAAE,IAA2B,EAAE,EAAE,eAAe,EAAE;YACvD,OAAO,eAAe,CAAC,eAAe,iCAC/B,IAAI,KACP,QAAQ,EAAE,gCACH,IAAI,CAAC,QAAQ,KAChB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,GAAG,CAAC,EAAE,GACH,IACW,CAAC;QAChC,CAAC;KACJ;IACD,KAAK,EAAE;QACH,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;YACxE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC;gBAC3D,QAAQ,EAAE;oBACN,OAAO,EAAE,SAAS;iBACrB;gBACD,KAAK;gBACL,IAAI;gBACJ,IAAI,EAAE;oBACF,GAAG,EAAE,WAAW;oBAChB,KAAK,EAAE,gBAAS,CAAC,GAAG;iBACvB;aACJ,CAAC,CAAC;YAEH,OAAO;gBACH,UAAU;gBACV,IAAI;aACP,CAAC;QACN,CAAC;KACJ;IACD,QAAQ,EAAE;QACN,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE;YAC7C,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC;YAC/C,OAAO,WAAW,CAAC,MAAM,CAAC;gBACtB,OAAO,EAAE,SAAS;gBAClB,EAAE;aACL,CAAC,CAAC;QACP,CAAC;QACD,WAAW,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;YACtE,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;gBAC3C,OAAO,EAAE,YAAY,CAAC,OAAO;gBAC7B,QAAQ,EAAE,WAAW,CAAC,SAAS;gBAC/B,OAAO,EAAE,SAAS,CAAC,SAAS;gBAC5B,KAAK,EAAE,YAAY,CAAC,KAAK;aACrB,CAAC,CAAC;QACd,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;YAC5E,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;YACxC,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;YAClC,MAAM,OAAO,GAAQ,MAAM,WAAW,CAAC,MAAM,CAAC;gBAC1C,OAAO,EAAE,SAAgB;gBACzB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,SAAgB;gBAC1B,MAAM,EAAE,SAAgB;gBACxB,KAAK,EAAE,EAAW;aACrB,CAAC,CAAC;YACH,MAAM,aAAa,GAAQ,MAAM,OAAO,CAAC,GAAG,CACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAC1E,CAAC;YACF,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;gBAClC,KAAK,EAAE,aAAa;aAChB,CAAC,CAAC;QACd,CAAC;QACD,UAAU,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;YAC3D,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1F,OAAO,GAAG,CAAC;QACf,CAAC;KACJ;CACJ,CAAC,CAAC;AA/GU,qBAAa,iBA+GvB;;;;;;;;;;;;;;;;ACnHH,2FAA6E;AAEtE,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,CAAC;IACrC,IAAI,EAAE,8BAAW;IACjB,IAAI,EAAE,8BAAW;IACjB,QAAQ,EAAE,kCAAe;CAC5B,CAAC,CAAC;AAJU,0BAAkB,sBAI5B;;;;;;;;;;;;;;;;ACHI,MAAM,iBAAiB,GAAG,GAAyB,EAAE,CAAC,CAAC;IAC1D,KAAK,EAAE;QACH,gBAAgB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE;YAC/D,OAAO,eAAe,CAAC,MAAM,CAAC;gBAC1B,QAAQ,EAAE;oBACN,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,WAAW,CAAC,SAAS;iBAC9B;aACJ,CAAC,CAAC;QACP,CAAC;KACJ;IACD,QAAQ,EAAE;QACN,oBAAoB,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE;YACpE,OAAO,eAAe,CAAC,MAAM,iCACtB,QAAQ,KACX,IAAI,EAAE,WAAW,CAAC,SAAS,IAC7B,CAAC;QACP,CAAC;QACD,uBAAuB,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE;YAC9D,OAAO,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,yBAAyB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE;YACtD,OAAO,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;KACJ;CACJ,CAAC,CAAC;AAzBU,yBAAiB,qBAyB3B;;;;;;;;;;;;;AC5BH;AAAe,qFAAsB,8EAA8E,eAAe,6CAA6C,kBAAkB,uBAAuB,CAAC,E;;;;;;;;;;;;ACAzN;AAAe,oFAAqB,oXAAoX,8BAA8B,4NAA4N,GAAG,E;;;;;;;;;;;;ACArpB;AAAe,mGAAoC,2XAA2X,wBAAwB,4MAA4M,gCAAgC,+GAA+G,gCAAgC,4CAA4C,sBAAsB,qCAAqC,yBAAyB,qCAAqC,mBAAmB,iEAAiE,uBAAuB,4HAA4H,qFAAqF,+LAA+L,0BAA0B,mjBAAmjB,GAAG,E;;;;;;;;;;;;ACAjjE;AAAe,mFAAoB,eAAe,4BAA4B,aAAa,GAAG,E;;;;;;;;;;;;;;;;;;ACA9F,mIAA0C;AAC1C,uHAAwC;AACxC,gIAA8C;AAC9C,qJAAqD;AACrD,uHAAwC;AACxC,4IAA+C;AAC/C,4IAAsD;AACtD,0HAA0C;AAC1C,mIAAgD;AAEhD,MAAM,MAAM,GAAG;IACX,0BAAQ;IACR,sBAAU;IACV,yBAAa;IACb,gCAAa;IACb,sBAAU;IACV,6BAAU;IACV,6BAAiB;IACjB,uBAAW;IACX,0BAAc;CACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEJ,wBAAM;;;;;;;;;;;;;ACtBf;AAAe,gFAAiB,6HAA6H,GAAG,E;;;;;;;;;;;;ACAhK;AAAe,2GAA4C,2nBAA2nB,wBAAwB,mHAAmH,6BAA6B,mDAAmD,0BAA0B,gEAAgE,kBAAkB,0CAA0C,yBAAyB,gSAAgS,0BAA0B,meAAme,8BAA8B,wGAAwG,GAAG,E;;;;;;;;;;;;ACAt+D;AAAe,0FAA2B,2MAA2M,oCAAoC,orBAAorB,6BAA6B,+BAA+B,GAAG,E;;;;;;;;;;;;ACA5gC;AAAe,8EAAe,gFAAgF,wBAAwB,6CAA6C,sBAAsB,kEAAkE,uBAAuB,yRAAyR,GAAG,E;;;;;;;;;;;;ACA9jB;AAAe,0FAA2B,kDAAkD,yCAAyC,+MAA+M,sBAAsB,yKAAyK,GAAG,E;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAthB,sDAAsD;AACtD,wGAAoD;AACpD,yFAAuC;AAEvC,0FAA4B;AAC5B,kBAAe,IAAI,qBAAO,CAAC,gBAAe,CAAC,CAAC;;;;;;;;;;;;;;;ACL5C,wGAAoD;AACpD,iFAAuD;AACvD,0FAA2G;AAE3G,kBAAe,IAAI,qBAAO,CAAC;IACvB,MAAM,EAAN,gBAAM;IACN,mBAAmB,EAAE,4BAAkB;IACvC,iBAAiB,EAAE,yCAA4B;IAC/C,mBAAmB,EAAE,CAAC,oCAAuB,CAAC;IAC9C,yBAAyB,EAAE,CAAC,iCAAoB,CAAC;IACjD,yBAAyB,EAAE,EAAE;CAChC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVH,sEAAuC;AAIvC,IAAa,WAAW,GAAxB,MAAa,WAAW;IACpB,YAAsB,UAA8B;QAA9B,eAAU,GAAV,UAAU,CAAoB;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAgC;QAClD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO;YACH,UAAU;YACV,IAAI;SACP,CAAC;IACN,CAAC;IAED,KAAK,CAAC,UAAqC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,UAA6C;QAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAChC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;SAClD;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,OAAgC;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,IAAO;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU,CAAC,IAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAI,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAO,EAAE,SAAS,GAAG,IAAI;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,IAA+B,EAAE,SAAS,GAAG,IAAI;QACpD,MAAM,EAAE,EAAE,KAAc,IAAI,EAAb,IAAI,UAAK,IAAI,EAAtB,MAAe,CAAO,CAAC;QAC7B,IAAI,EAAE,EAAE;YACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7C,IAAI,QAAQ,EAAE;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAS,EAAE,SAAS,CAAC,CAAC;aAChD;SACJ;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAS,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,EAAqC;QACxC,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;YACxB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SACzC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;CACJ;AA9DY,WAAW;IADvB,sBAAU,EAAE;GACA,WAAW,CA8DvB;AA9DY,kCAAW;;;;;;;;;;;;;;;;;;;;;;;;;ACLxB,sEAAmC;AACnC,qFAA4F;AAE5F,2HAA2E;AAE3E,uFAAmD;AAEnD,mGAA6C;AAC7C,wFAA2D;AAW3D,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,0BAA2C;IAC3E,YAEa,UAA8B,EAEtB,cAA+B,EAE/B,YAA0B,EAE1B,WAAyB,EAEzB,aAAoC;QAErD,KAAK,CAAC,UAAU,CAAC,CAAC;QAVT,eAAU,GAAV,UAAU,CAAoB;QAEtB,mBAAc,GAAd,cAAc,CAAiB;QAE/B,iBAAY,GAAZ,YAAY,CAAc;QAE1B,gBAAW,GAAX,WAAW,CAAc;QAEzB,kBAAa,GAAb,aAAa,CAAuB;IAGzD,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,QAAgB,EAAE,UAAkB;QAChE,OAAO,GAAG,QAAQ,KAAK,UAAU,EAAE,CAAC;IACxC,CAAC;IAEO,MAAM,KAAK,kBAAkB;QACjC,iCAAiC;QACjC,OAAO,gCAAoB,CAAC;IAChC,CAAC;IAEO,qBAAqB,CAAC,MAAc;QACxC,qDAAqD;QACrD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAAC,IAAY;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACzB,IAAI;YACJ,IAAI,EAAE,gBAAS,CAAC,OAAO;SAC1B,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAgC;QACtD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC/C,MAAM,SAAS,GAAG;YACd;gBACI,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,KAAK;gBAClB,WAAW,EAAE,cAAc,CAAC,kBAAkB;aACjD;SACJ,CAAC;QACF,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACpB,SAAS,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,EAAE;gBACR,WAAW,EAAE,KAAK;gBAClB,WAAW,EAAE,cAAc,CAAC,kBAAkB;aACjD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,MAAM,cAAc,GAA6B;YAC7C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,EAAE,gBAAS,CAAC,MAAM;YACtB,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,SAAS;YAClB,WAAW;SACd,CAAC;QACF,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAiC;QACrD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QACpC,IAAI,SAAS,EAAE;YACX,OAAO,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACxD;QACD,IAAI,IAAI,KAAK,gBAAS,CAAC,MAAM,EAAE;YAC3B,OAAO,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACxD;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ;QACxC,wCAAwC;QACxC,4DAA4D;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU;aAChC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;aACtB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAChB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC;gBACN,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,KAAK;gBAClB,WAAW,EAAE,cAAc,CAAC,kBAAkB;aACjD,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,GAAG,CAAC;YACxB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU;iBACpC,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iBAC3D,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;iBAC5B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,WAAW,CAAC;QACvB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAwB;QACtC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACrC,IAAI,IAAI,KAAK,gBAAS,CAAC,OAAO,EAAE;YAC5B,OAAO,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SAC5C;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,gBAAgB,GAAG,eAAe,GAAG,WAAW,CAAC;QACvD,IAAI,CAAC,gBAAgB,EAAE;YACnB,OAAO,KAAK,CAAC,eAAe,WAAW,UAAU,CAAC,CAAC;SACtD;QACD,MAAM,cAAc,mCACb,IAAI,KACP,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,KAAK;oBAClB,WAAW,EAAE,cAAc,CAAC,kBAAkB;iBACjD;aACJ,GACJ,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,SAAiB,EAAE,MAAc;QACpD,MAAM,OAAO,GAAa,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAChD,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC5B,CAAC,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;QACzD,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC;QACrE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAE/D,OAAO;YACH,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;YACvB,QAAQ;YACR,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,gBAAgB;SACnB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QAClC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACxC,QAAQ,EAAE;gBACN,SAAS;gBACT,QAAQ,EAAE,IAAI;aACjB;YACD,IAAI,EAAE;gBACF,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,gBAAS,CAAC,GAAG;aACvB;SACJ,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAClF,CAAC;QACF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,kCAAO,IAAI,KAAE,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,IAAG,EAAE,EAAE,CAAC,CAAC;IACzG,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,IAAU;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CACzB,EAAE,EAAE,EAAE,SAAS,EAAE,EACjB;YACI,SAAS,EAAE,IAAI;SAClB,CACJ,CAAC;IACN,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,KAAa;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC;YACZ,IAAI;YACJ,KAAK;SACR,CAAC,CAAC;IACP,CAAC;IAED,uBAAuB,CAAC,IAAY,EAAE,KAAa;QAC/C,OAAO,IAAI,CAAC,GAAG,CAAC;YACZ,IAAI;YACJ,KAAK;YACL,SAAS,EAAE,IAAI;SAClB,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,MAAgB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE;gBACN,IAAI;gBACJ,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;aACzB;SACJ,CAAC,CAAC;IACP,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,IAAY;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC;YACd,IAAI;YACJ,OAAO,EAAE,EAAE,IAAI,EAAE;SACpB,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CACP,IAAY,EACZ,IAAY,EACZ,cAAuB,EACvB,YAAoB;QAEpB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC1B,cAAc;QACd,YAAY;QACZ,yBAAyB;QACzB,KAAK;SACR,CAAC,CAAC;IACP,CAAC;IAED,aAAa,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;CACJ;AA3NY,cAAc;IAElB,6BAAM,CAAC,iBAAK,CAAC,iBAAiB,CAAC;IAE/B,6BAAM,CAAC,wBAAc,CAAC,eAAe,CAAC;IAEtC,6BAAM,CAAC,wBAAc,CAAC,YAAY,CAAC;IAEnC,6BAAM,CAAC,iBAAK,CAAC,WAAW,CAAC;IAEzB,6BAAM,CAAC,kBAAW,CAAC,qBAAqB,CAAC;GAVrC,cAAc,CA2N1B;AA3NY,wCAAc;;;;;;;;;;;;;;;;;;;;;;;;;ACnB3B,yGAAkC;AAClC,mGAA+B;AAC/B,iHAAsC;AACtC,2GAAmC;;;;;;;;;;;;;;;;;;;;;;;;;ACHnC,sEAAmC;AACnC,qFAAsE;AACtE,uHAAmG;AACnG,mGAA6C;AAC7C,wFAAqC;AAGrC,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,0BAAqC;IAClE,YAEI,UAA0B,EAET,eAAiC;QAElD,KAAK,CAAC,UAAU,CAAC,CAAC;QAFD,oBAAe,GAAf,eAAe,CAAkB;IAGtD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAc,EAAE,YAAiB,EAAE,WAAgB;QAChE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;QAClC,MAAM,OAAO,GAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAC9C,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,EAAE;SACZ,CAAC,CAAC;QACH,MAAM,aAAa,GAAgB,MAAM,OAAO,CAAC,GAAG,CAChD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,mBAAY,CAAC,IAAa;YACnC,IAAI;YACJ,SAAS,EAAE,SAAS;YACpB,GAAG,EAAE,OAAO,CAAC,EAAE;SAClB,CAAC,CACL,CACJ,CAAC;QACF,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAmB,EAAE,MAAc,EAAE,MAAM;QACvD,MAAM,WAAW,GAAQ,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YACvD,OAAO,EAAE,mBAAY,CAAC,IAAa;YACnC,IAAI;YACJ,SAAS,EAAE,MAAM;YACjB,GAAG,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;CACJ;AA3CY,WAAW;IAEf,6BAAM,CAAC,iBAAK,CAAC,cAAc,CAAC;IAE5B,6BAAM,CAAC,sBAAe,CAAC,eAAe,CAAC;GAJnC,WAAW,CA2CvB;AA3CY,kCAAW;;;;;;;;;;;;;;;;;;;;;;;;;ACNxB,sEAA+C;AAC/C,mGAA6C;AAC7C,wFAAqC;AAIrC,IAAa,iBAAiB,GAA9B,MAAa,iBAAkB,SAAQ,0BAAwB;IAC3D,YAEa,UAAiC;QAE1C,KAAK,CAAC,UAAU,CAAC,CAAC;QAFT,eAAU,GAAV,UAAU,CAAuB;IAG9C,CAAC;CACJ;AAPY,iBAAiB;IAD7B,sBAAU,EAAE;IAGJ,6BAAM,CAAC,iBAAK,CAAC,oBAAoB,CAAC;GAF9B,iBAAiB,CAO7B;AAPY,8CAAiB;;;;;;;;;;;;;;;;;;;;;;;;;ACN9B,sEAA+C;AAC/C,mGAA6C;AAC7C,wFAAqC;AAIrC,IAAa,eAAe,GAA5B,MAAa,eACT,SAAQ,0BAAsE;IAG9E,YAEa,kBAAuC;QAEhD,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAFjB,uBAAkB,GAAlB,kBAAkB,CAAqB;IAGpD,CAAC;CACJ;AAVY,eAAe;IAD3B,sBAAU,EAAE;IAMJ,6BAAM,CAAC,iBAAK,CAAC,kBAAkB,CAAC;GAL5B,eAAe,CAU3B;AAVY,0CAAe;;;;;;;;;;;;;;;;;;;;;;;;;ACP5B,sGAA+B;;;;;;;;;;;;;;;;ACA/B,mEAA+D;AAC/D,qFAA0D;AAC1D,6GAA+E;AAI/E,MAAM,kBAAkB,GAAG,IAAI,iBAAM,CACjC;IACI,IAAI,EAAE;QACF,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM;QACzB,IAAI,EAAE,CAAC,gBAAS,CAAC,OAAO,EAAE,gBAAS,CAAC,MAAM,EAAE,gBAAS,CAAC,KAAK,EAAE,gBAAS,CAAC,OAAO,EAAE,gBAAS,CAAC,OAAO,CAAC;QAClG,QAAQ,EAAE,IAAI;KACjB;IACD,OAAO,EAAE;QACL,IAAI,iBAAM,CACN;YACI,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;YACtD,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACpC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACvC,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC3C,gBAAgB,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC/C,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YACzC,aAAa,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1C,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE;YACzC,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE;SACzC,EACD,wCAAuB,CAC1B;KACJ;IACD,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACvC,aAAa,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC5C,iBAAiB,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAChD,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;IAClD,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACpC,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1C,OAAO,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACtC,OAAO,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;CAC5D,EACD,wCAAuB,CAC1B,CAAC;AAEF,mCAAkB,CAAC,kBAAkB,CAAC,CAAC;AAGhC,MAAM,gBAAgB,GAAyC,CAAC,EAAE,EAAE,EAAE,CACzE,EAAE,CAAC,KAAK,CAAgB,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAD9C,wBAAgB,oBAC8B;;;;;;;;;;;;;;;;AC9C9C,+BAAuB,GAAG;IACnC,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE;QACJ,QAAQ,EAAE,IAAI;KACjB;IACD,QAAQ,EAAE;QACN,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,SAAS,CAAC,GAAG,EAAE,GAAG;YACd,OAAO,GAAG,CAAC,GAAG,CAAC;YACf,OAAO,GAAG,CAAC,GAAG,CAAC;QACnB,CAAC;KACJ;CACJ,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE;IACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QACjB,QAAQ,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AALW,0BAAkB,sBAK7B;;;;;;;;;;;;;;;;;;;;;;;;;ACvBF,6FAA0B;AAC1B,uFAAuB;AACvB,qGAA8B;AAC9B,+FAA2B;;;;;;;;;;;;;;;;ACH3B,mEAA+D;AAE/D,6GAA+E;AAI/E,MAAM,qBAAqB,GAAG,IAAI,iBAAM,CACpC;IACI,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;IACnD,OAAO,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;IACzD,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACzC,WAAW,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACxC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;CACnE,EACD,wCAAuB,CAC1B,CAAC;AAEF,mCAAkB,CAAC,qBAAqB,CAAC,CAAC;AAGnC,MAAM,mBAAmB,GAA4C,CAAC,EAAE,EAAE,EAAE,CAC/E,EAAE,CAAC,KAAK,CAAgB,cAAc,EAAE,qBAAqB,CAAC,CAAC;AADtD,2BAAmB,uBACmC;;;;;;;;;;;;;;;;ACrBnE,mEAA+D;AAE/D,6GAA+E;AAI/E,MAAM,eAAe,GAAG,IAAI,iBAAM,CAC9B;IACI,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;IAC1D,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;IAC3D,OAAO,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;IACzD,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACrC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACtC,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACnC,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACnC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IACvC,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACrC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACxC,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,OAAO,EAAE;CAC/C,EACD,wCAAuB,CAC1B,CAAC;AAEF,mCAAkB,CAAC,eAAe,CAAC,CAAC;AAG7B,MAAM,aAAa,GAAsC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAa,OAAO,EAAE,eAAe,CAAC,CAAC;AAA1G,qBAAa,iBAA6F;;;;;;;;;;;;;;;;AChCvH,mEAA+D;AAE/D,6GAAsD;AAItD,MAAM,mBAAmB,GAAG,IAAI,iBAAM,CAAC;IACnC,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,MAAM,EAAE;IACvC,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE;IACtD,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;CACtD,CAAC,CAAC;AAEH,mCAAkB,CAAC,mBAAmB,CAAC,CAAC;AAGjC,MAAM,iBAAiB,GAA0C,CAAC,EAAE,EAAE,EAAE,CAC3E,EAAE,CAAC,KAAK,CAAiB,WAAW,EAAE,mBAAmB,CAAC,CAAC;AADlD,yBAAiB,qBACiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjB/D,sDAAsD;AACtD,6DAA6C;AAK7C,sEAAkD;AAElD,2FAAsE;AAGtE,IAAa,cAAc,sBAA3B,MAAa,cAAc;IAOvB,YAEI,SAAuC,EAEvC,EAAc,EAEd,MAAqB,EAErB,OAAuB;QAEvB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAsB;QACtC,IAAI;YACA,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;YAChE,yBAAyB;YACzB,MAAM,KAAkB,QAAQ,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAA/C,EAAE,EAAE,OAA2C,EAAtC,IAAI,cAAb,MAAe,CAAgC,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK;iBAC5B,IAAI,iCAAM,IAAI,GAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,cAAc,CAAC;iBAC7D,KAAK,CAAC,KAAK,IAAI,8BAAkB,CAAC,KAAK,CAAC;iBACxC,IAAI,CAAC,IAAI,IAAI,8BAAkB,CAAC,IAAI,CAAC;iBACrC,IAAI,CAAC,iBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,2BAAe,CAAC;iBACpE,IAAI,EAAE,CAAC;YACZ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,EAAE,CAAQ,CAAC;SACpD;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvF,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,UAA2B;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,UAA2B,EAAE,cAAuB;QACjE,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;YACjG,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,EAAO,CAAC;SACpC;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC1F,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,UAAmC,EAAE,cAAuB;QAC1E,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;YACjG,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,EAAO,CAAC;SACpC;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC1F,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAI,IAAO;QAC1B,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,QAAQ,CAAC,QAAQ,EAAO,CAAC;SACnC;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,EAAE,CAAC,CAAC;YACnG,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAEM,KAAK,CAAC,UAAU,CAAI,IAAS;QAChC,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC/C,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,OAAO,QAA0B,CAAC;SACrC;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;SACtE;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAI,UAA0B,EAAE,MAAS,EAAE,OAAiC;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAI,UAAU,EAAE,MAAM,kBACpC,MAAM,EAAE,IAAI,IACT,OAAO,EACZ,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,MAAM,CAAI,QAAwB,EAAE,MAAS,EAAE,OAAgC;QACxF,IAAI;YACA,MAAM,EAAE,SAAS,KAAmB,OAAO,EAArB,SAAS,UAAK,OAAO,EAArC,aAA2B,CAAU,CAAC;YAC5C,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,EAAE;gBACZ,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC/B,IAAI,CAAC,GAAG,EAAE;oBACN,MAAM,KAAK,CACP,8DAA8D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAC3F,CAAC;iBACL;aACJ;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC9B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAC5B,kBAAS,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAC1C,OAAO,GAAG,CAAC;iBACd;YACL,CAAC,CAAC,kBACA,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,IAAK,SAAS,EAC5B,CAAC;SAC9B;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,QAAQ,aAAa,MAAM,EAAE,CAAC,CAAC;YACnF,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,QAAwB;QACxC,IAAI;YACA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,CAAC,OAAO,CAAC;SACpB;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,QAAwB;QAC5C,IAAI;YACA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1E,OAAO,QAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,KAAI,CAAC,CAAC;SACrC;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,CAAC;SACX;IACL,CAAC;IAED,kDAAkD;IAC1C,aAAa,CAAC,UAA0B;QAC5C,MAAM,EAAE,EAAE,EAAE,GAAG,KAAmB,UAAU,EAAxB,SAAS,UAAK,UAAU,EAAtC,MAAyB,CAAa,CAAC;QAC7C,uCACO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACpB,SAAS,EACd;IACN,CAAC;CACJ;AApJY,cAAc;IAD1B,sBAAU,EAAE;IASJ,gCAAS,EAAE;IAEX,gCAAS,EAAE;IAEX,gCAAS,EAAE;IAEX,gCAAS,EAAE;GAdP,cAAc,CAoJ1B;AApJY,wCAAc;;;;;;;;;;;;;;;;;;;;;;;;;ACX3B,sDAAsD;AACtD,sEAAyD;AAMzD,qFAA6C;AAC7C,sHAAmD;AAGnD,IAAa,iBAAiB,GAA9B,MAAa,iBAAkB,SAAQ,gCAAwB;IAC3D,YAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB;QAEvB,KAAK,CAAC,yBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CACJ;AAZY,iBAAiB;IAD7B,sBAAU,EAAE;IAGJ,6BAAM,CAAC,mBAAmB,CAAC;IAE3B,6BAAM,CAAC,QAAQ,CAAC;IAEhB,6BAAM,CAAC,eAAe,CAAC;IACvB,+BAAQ,EAAE;GAPN,iBAAiB,CAY7B;AAZY,8CAAiB;;;;;;;;;;;;;;;;;;;;;;;;;ACX9B,yHAAqC;AACrC,mHAAkC;AAClC,iIAAyC;AACzC,2HAAsC;;;;;;;;;;;;;;;;;;;;;;;;;ACHtC,sDAAsD;AACtD,sEAAyD;AAKzD,qFAA0C;AAC1C,sHAAmD;AAGnD,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,gCAAqB;IACrD,YAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB;QAEvB,KAAK,CAAC,sBAAa,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACJ;AAZY,cAAc;IAD1B,sBAAU,EAAE;IAGJ,6BAAM,CAAC,mBAAmB,CAAC;IAE3B,6BAAM,CAAC,QAAQ,CAAC;IAEhB,6BAAM,CAAC,eAAe,CAAC;IACvB,+BAAQ,EAAE;GAPN,cAAc,CAY1B;AAZY,wCAAc;;;;;;;;;;;;;;;;;;;;;;;;;ACV3B,sDAAsD;AACtD,sEAAyD;AAKzD,qFAAgD;AAChD,sHAAmD;AAGnD,IAAa,oBAAoB,GAAjC,MAAa,oBAAqB,SAAQ,gCAA2B;IACjE,YAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB;QAEvB,KAAK,CAAC,4BAAmB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACJ;AAZY,oBAAoB;IADhC,sBAAU,EAAE;IAGJ,6BAAM,CAAC,mBAAmB,CAAC;IAE3B,6BAAM,CAAC,QAAQ,CAAC;IAEhB,6BAAM,CAAC,eAAe,CAAC;IACvB,+BAAQ,EAAE;GAPN,oBAAoB,CAYhC;AAZY,oDAAoB;;;;;;;;;;;;;;;;;;;;;;;;;ACTjC,sEAA6C;AAI7C,qFAA8C;AAC9C,sHAAmD;AAGnD,IAAa,kBAAkB,GAA/B,MAAa,kBAAmB,SAAQ,gCAAyB;IAC7D,YAEI,EAAc,EAEd,MAAqB,EAGrB,OAAuB;QAEvB,KAAK,CAAC,0BAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACJ;AAZY,kBAAkB;IAEtB,6BAAM,CAAC,mBAAmB,CAAC;IAE3B,6BAAM,CAAC,QAAQ,CAAC;IAEhB,6BAAM,CAAC,eAAe,CAAC;IACvB,+BAAQ,EAAE;GAPN,kBAAkB,CAY9B;AAZY,gDAAkB;;;;;;;;;;;;ACT/B,6D;;;;;;;;;;;ACAA,iD;;;;;;;;;;;ACAA,sD;;;;;;;;;;;ACAA,4D;;;;;;;;;;;ACAA,gD;;;;;;;;;;;ACAA,6C;;;;;;;;;;;ACAA,sC;;;;;;;;;;;ACAA,mC;;;;;;;;;;;ACAA,qC","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","export const DEFAULT_NOTIFY_PROPS = {\n desktopNotifyProp: true,\n markUnreadNotifyProp: true,\n pushNotifyProp: true,\n emailNotifyProp: true,\n ignoreChannelMentionsNotifyProp: true,\n};\n","export * from './types';\nexport * from './query.constants';\nexport * from './default-notify-props';\n","export enum PAGINATION_OPTIONS {\n limit = 10,\n skip = 0,\n}\n\nexport const DEFAULT_SORTING = {\n id: 'asc',\n};\n","export const TYPES = {\n BaseRepository: Symbol('BaseRepository'),\n BaseService: Symbol('BaseService'),\n\n ChannelRepository: Symbol('ChannelRepository'),\n PostRepository: Symbol('PostRepository'),\n PostThreadRepository: Symbol('PostThreadRepository'),\n ReactionRepository: Symbol('ReactionRepository'),\n\n ChannelService: Symbol('ChannelService'),\n PostService: Symbol('PostService'),\n PostThreadService: Symbol('PostThreadService'),\n ReactionService: Symbol('ReactionService'),\n};\n","import { ContainerModule, interfaces } from 'inversify';\nimport { ChannelService, PostService, PostThreadService, ReactionService } from '../services';\nimport { TYPES } from '../constants';\nimport {\n IPostService,\n IPostRepository,\n IPostThreadService,\n IPostThreadRepository,\n IChannelRepository,\n IChannelService,\n IReactionService,\n IReactionRepository,\n} from '../interfaces';\nimport { ChannelRepository, PostRepository, PostThreadRepository, ReactionRepository } from '../store';\n\n/**\n * Local services and exposed micro services to serve remote connections.\n * Operates within in the Gateway.\n *\n * @param settings Settings\n */\nexport const localContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetNamed('proxy');\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetNamed('proxy');\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetNamed('proxy');\n });\n\n/**\n * Operates external to the Gateway. Usually a broker listen to calls and invoke this service\n * local to the micro container.\n *\n * @param settings Settings\n */\nexport const externalContainerModule: (settings) => interfaces.ContainerModule = (settings) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind<IChannelRepository>(TYPES.ChannelRepository)\n .to(ChannelRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n bind<IPostRepository>(TYPES.PostRepository).to(PostRepository).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadRepository>(TYPES.PostThreadRepository)\n .to(PostThreadRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionRepository>(TYPES.ReactionRepository)\n .to(ReactionRepository)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n bind<IChannelService>(TYPES.ChannelService).to(ChannelService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostService>(TYPES.PostService).to(PostService).inSingletonScope().whenTargetIsDefault();\n\n bind<IPostThreadService>(TYPES.PostThreadService)\n .to(PostThreadService)\n .inSingletonScope()\n .whenTargetIsDefault();\n\n bind<IReactionService>(TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetIsDefault();\n });\n","import { interfaces } from 'inversify';\nimport { IChannelService, IPostService, IPostThreadService, IReactionService, IServices } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport const contextServicesFromContainer = (container: interfaces.Container): IServices => ({\n channelService: container.get<IChannelService>(TYPES.ChannelService),\n postService: container.get<IPostService>(TYPES.PostService),\n postThreadService: container.get<IPostThreadService>(TYPES.PostThreadService),\n reactionService: container.get<IReactionService>(TYPES.ReactionService),\n});\n","export * from './containers';\nexport * from './context-services-from-container';\n","export * from './schema';\nexport * from './resolvers';\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelMemberResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { IChannel, IResolvers, IRoomType } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const channelResolvers = (): IResolvers<IContext> => ({\n Query: {\n channelByName(src, { name }, { channelService, userContext }) {\n return channelService.getByName(userContext.teamId, name) as Promise<IChannel>;\n },\n channels(src, _, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.getChannels(teamId, accountId, false, new Date().getTime()) as Promise<IChannel[]>;\n },\n channelsByUser(src, _, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.getAll({\n criteria: {\n creator: accountId,\n },\n }) as Promise<IChannel[]>;\n },\n directChannel(src, { id }, { channelService, userContext }) {\n return channelService.get({\n criteria: {\n id,\n user: userContext.accountId,\n type: IRoomType.DIRECT,\n },\n }) as Promise<IChannel>;\n },\n },\n Mutation: {\n createChannel(src, { name, description }, { channelService, userContext }) {\n const { accountId, teamId } = userContext;\n return channelService.saveChannel({\n type: IRoomType.CHANNEL,\n creator: accountId,\n title: name,\n topic: name,\n team: teamId,\n description,\n }) as Promise<IChannel>;\n },\n\n addMemberToChannel(src, { channelId, memberId }, { channelService, userContext }) {\n return channelService.addMemberToChannel(channelId, memberId) as Promise<IChannel>;\n },\n\n createDirectChannel(src, { receiver, displayName }, { channelService, userContext }) {\n const { accountId } = userContext;\n return channelService.createDirectChannel({\n sender: accountId,\n receiver,\n displayName,\n }) as Promise<IChannel>;\n },\n hideChannel(src, { id }, { channelService }) {\n return channelService.hideChannel(id);\n },\n leaveChannel(src, { id }, { channelService }) {\n return channelService.leaveChannel(id);\n },\n deleteChannel(src, { id }, { channelService }) {\n return channelService.deleteChannel(id);\n },\n },\n});\n","import { primitiveResolvers } from './primitive-resolvers';\nimport { channelResolvers } from './channel';\nimport { channelMemberResolvers } from './channel-member';\nimport { postResolvers } from './post';\nimport { postThreadResolvers } from './post-thread';\nimport { reactionResolvers } from './reaction';\n\nexport const messengerResolvers = [\n primitiveResolvers,\n channelResolvers,\n channelMemberResolvers,\n postResolvers,\n postThreadResolvers,\n reactionResolvers,\n];\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const postThreadResolvers = (): IResolvers<IContext> => ({\n Query: {},\n Mutation: {},\n});\n","import { generateUri, IClientCacheTypeNames, IConfigurationModel } from '@adminide-stack/core';\nimport { IFileInfo, IFilesInfo, IResolvers, ISortEnum } from '@messenger-box/core';\nimport { GetAllArgs, IContext } from '../../interfaces';\n\nexport const postResolvers = (): IResolvers<IContext> => ({\n // Temporary fix, until we have extension support in base module\n FileInfo: {\n extension(src) {\n return src.mimeType.split('/')[1];\n },\n },\n Post: {\n editedBy(src, args, { accountService }) {\n return accountService.findAccountById(src.editedBy.toString());\n },\n deletedBy(src, args, { accountService }) {\n return accountService.findAccountById(src?.deletedBy.toString());\n },\n author(src, args, { accountService }) {\n const author = src.author?.toString();\n if (author) {\n return accountService.findAccountById(author);\n }\n return accountService.findAccountById(src.editedBy.toString());\n },\n channel(src, args, { channelService }) {\n return channelService.get(src.channel.toString());\n },\n propsConfiguration(src, args, { configurationService }) {\n const resource = generateUri('posts' as any, { _id: src.id }, 'props');\n let data = '{}';\n try {\n data = JSON.stringify(src.props);\n } catch (err) {\n console.log('---Errr---', err);\n }\n const machineModel = configurationService.parser(resource.toString(), data) as IConfigurationModel;\n return {\n resource,\n contents: machineModel.contents,\n overrides: machineModel.overrides,\n keys: machineModel.keys,\n __typename: IClientCacheTypeNames.MachineConfiguration,\n };\n },\n files(src, args: GetAllArgs<IFileInfo>, { fileInfoService }) {\n return fileInfoService.getAllWithCount({\n ...args,\n criteria: {\n ...args.criteria,\n refType: 'Post',\n ref: src.id,\n } as unknown,\n }) as unknown as IFilesInfo;\n },\n },\n Query: {\n async messages(src, { channelId, limit, skip }, { postService, userContext }) {\n const { data, totalCount } = await postService.getAllWithCount({\n criteria: {\n channel: channelId,\n },\n limit,\n skip,\n sort: {\n key: 'createdAt',\n value: ISortEnum.ASC,\n },\n });\n\n return {\n totalCount,\n data,\n };\n },\n },\n Mutation: {\n deleteMessage(src, { messageId }, { postService }) {\n const { channelId, messageId: id } = messageId;\n return postService.delete({\n channel: channelId,\n id,\n });\n },\n editMessage(src, { messageId, messageInput }, { postService, userContext }) {\n return postService.update(messageId.messageId, {\n message: messageInput.content,\n editedBy: userContext.accountId,\n channel: messageId.channelId,\n files: messageInput.files,\n } as any);\n },\n async sendMessage(src, { channelId, messageInput }, { postService, userContext }) {\n const { content, files } = messageInput;\n const { accountId } = userContext;\n const postRes: any = await postService.create({\n channel: channelId as any,\n message: content,\n editedBy: accountId as any,\n author: accountId as any,\n files: [] as never,\n });\n const uploadedFiles: any = await Promise.all(\n files.map((file) => postService.uploadImg(file, accountId, postRes.id)),\n );\n return postService.update(postRes.id, {\n files: uploadedFiles,\n } as any);\n },\n uploadFile(src, { files, postId }, { postService, userContext }) {\n const res = [];\n files.map((file) => res.push(postService.uploadImg(file, userContext.accountId, postId)));\n return res;\n },\n },\n});\n","import { GraphQLDate, GraphQLTime, GraphQLDateTime } from 'graphql-iso-date';\n\nexport const primitiveResolvers = () => ({\n Date: GraphQLDate,\n Time: GraphQLTime,\n DateTime: GraphQLDateTime,\n});\n","import { IResolvers } from '@messenger-box/core';\nimport { IContext } from '../../interfaces';\n\nexport const reactionResolvers = (): IResolvers<IContext> => ({\n Query: {\n getPostReactions(src, { message }, { reactionService, userContext }) {\n return reactionService.getAll({\n criteria: {\n post: message,\n user: userContext.accountId,\n },\n });\n },\n },\n Mutation: {\n addReactionToMessage(src, { reaction }, { reactionService, userContext }) {\n return reactionService.create({\n ...reaction,\n user: userContext.accountId,\n });\n },\n updateReactionToMessage(src, { reaction, id }, { reactionService }) {\n return reactionService.update(id, { reaction });\n },\n removeReactionFromMessage(src, { id }, { reactionService }) {\n return reactionService.delete(id);\n },\n },\n});\n","export default \"interface IBaseRepo {\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ninput Sort{\\n key: String!,\\n value: SortEnum!,\\n}\\n\\nenum SortEnum{\\n ASC,\\n DESC\\n}\";","export default \"type ChannelMember {\\n id: ID!\\n user: String!\\n roles: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n explicitRoles: String\\n schemeAdmin: Boolean\\n lastViewedAt: Int\\n updatedAt: DateTime,\\n CreatedAt: DateTime,\\n}\\n\\ninput ChannelMemberInput {\\n userId: String!\\n roles: String\\n notifyProps: AnyObject\\n schemeGuest: Boolean\\n schemeUser: Boolean\\n schemeAdmin: Boolean\\n explicitRoles: String\\n}\\n\";","export default \"type Channel implements IBaseRepo {\\n id: String!\\n title: String\\n topic: String\\n purpose: String\\n description: String\\n displayName: String\\n team: AccountTeam\\n lastPostAt: DateTime\\n totalMsgCount: Int\\n totalMsgCountRoot: Int\\n creator: UserAccount\\n members: [ChannelMember]\\n type: String\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n}\\n\\ntype ChannelUnread {\\n teamId: String\\n channelId: String\\n msgCount: Int\\n mentionCount: Int\\n mentionCountRoot: Int\\n msgCountRoot: Int\\n notifyProps: AnyObject\\n}\\n\\n\\ninput ChannelFilterInput {\\n nameFilter: String\\n privacy: ChannelPrivacy\\n joinedChannels: Boolean\\n storyBy: ChannelSort\\n}\\n\\ninput ChannelNameAndDirect {\\n name: String!\\n direct: Boolean!\\n}\\n\\nenum ChannelSort {\\n NAME\\n NUMBER_OF_MESSAGES\\n}\\n\\nenum ChannelPrivacy {\\n PRIVATE\\n PUBLIC\\n ALL\\n}\\n\\nenum RoomType {\\n CHANNEL\\n DIRECT\\n GROUP\\n PRIVATE\\n VISITOR\\n}\\n\\nextend type Query {\\n channelByName(name: String!): Channel @addAccountContext @isAuthenticated\\n channels(filter: ChannelFilterInput = {\\n privacy: ALL,\\n joinedChannels: false,\\n sortyBy: NAME\\n }): [Channel] @addAccountContext @isAuthenticated\\n channelsByUser: [Channel] @addAccountContext @isAuthenticated\\n directChannel(id: ID!): Channel @addAccountContext @isAuthenticated\\n}\\n\\nextend type Mutation {\\n createChannel(\\n name: String!,\\n description:String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n addMemberToChannel(\\n channelId: String!,\\n memberId: String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n createDirectChannel(\\n receiver: [ID]!\\n displayName: String!\\n ): Channel @addAccountContext @isAuthenticated\\n\\n hideChannel(id: ID!): Boolean @isAuthenticated\\n\\n leaveChannel(id: ID!): Boolean @isAuthenticated\\n\\n deleteChannel(id: ID!): Boolean @isAuthenticated\\n}\\n\";","export default \"interface IFileRef{\\n id:ID!\\n}\\n\\nextend enum FileRefType{\\n Post\\n}\\n\";","import extended from './extended.graphql';\nimport baseSchema from './base.graphql';\nimport channelSchema from './channel.graphql';\nimport channelMember from './channel-member.graphql';\nimport postSchema from './post.graphql';\nimport postThread from './post-thread.graphql';\nimport preferencesSchema from './preferences.graphql';\nimport usersSchema from './users.graphql';\nimport reactionSchema from './reaction.graphql';\n\nconst schema = [\n extended,\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 & IFileRef {\\n id: ID!\\n author: UserAccount\\n channel: Channel\\n\\n rootId: String\\n parentId: String\\n originalId: String\\n\\n \\\"\\\"\\\" Post sent by server e.g. User joined channel \\\"\\\"\\\"\\n fromServer: Boolean\\n\\n message: String\\n type: String\\n props: AnyObject\\n hashTags: String\\n\\n filenames: [String]\\n fields: [String]\\n reactions: [Reaction]\\n files(criteria:AnyObject, limit:Int, skip:Int, sort:Sort):FilesInfo!\\n editedBy: UserAccount\\n deletedBy: UserAccount\\n createdAt: DateTime\\n updatedAt: DateTime\\n deletedAt: DateTime\\n\\n propsConfiguration: MachineConfiguration\\n}\\n\\ninput MessageInput {\\n content: String!\\n userRef: [String] #userId\\n channelRef: [String] #channelId\\n files: [Upload!]\\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 uploadFile( files: [Upload], postId:String!): [String] @isAuthenticated @addAccountContext\\n deleteFile(url: String!): Boolean @isAuthenticated @addAccountContext\\n}\\n\\nextend type Subscription {\\n chatMessageAdded(channelId: String, directTo: String): Post @isAuthenticated @addAccountContext\\n}\\n\";","export default \"\\n\\ntype ChannelSettings {\\n disableNotification: Boolean\\n audio: String\\n desktop: String\\n duration: Int\\n mobile: String\\n mail: String\\n hideUnreadRoomStatus : Boolean\\n unreadTrayIconAlret: String\\n}\\n\\nextend type Preference_Account {\\n language: String\\n notificationDuration: Float\\n unreadTrayIconAlert: Boolean\\n useEmojis: Boolean\\n convertAsciiToEmoji: Boolean\\n autoLoadImages: Boolean\\n saveMobileBandwith: Boolean\\n collapseEmbeddedMeida: Boolean\\n unreadRoomsMode: Boolean\\n hideUserName: Boolean\\n hideRoles: Boolean\\n hideRightSideBarWithClick: Boolean\\n hideAvatars: Boolean\\n mergePrivateGroupsWithChannels: Boolean\\n enterKeyBehaviour: String\\n viewMode: String\\n offlineEmailNotifications: String\\n highlights: String\\n newRoomNotificationSound: String\\n newMessageNotificationSound: String\\n email: String\\n avatar: String\\n name: String\\n}\\n\\nextend type Preferences {\\n channel: ChannelSettings\\n}\\n\";","export default \"type Reaction{\\n id:ID!\\n reaction:String!,\\n user: UserAccount!,\\n post: Post!\\n}\\n\\ninput ReactionInput{\\n reaction:String!,\\n post: String!\\n}\\n\\nextend type Query{\\n getPostReactions(message:ID!):[Reaction] @isAuthenticated\\n}\\nextend type Mutation{\\n addReactionToMessage(reaction:ReactionInput):Reaction @isAuthenticated @addAccountContext\\n updateReactionToMessage(id:ID!, reaction:String!):Reaction @isAuthenticated @addAccountContext\\n removeReactionFromMessage(id:ID!):Boolean @isAuthenticated @addAccountContext\\n}\\n\";","export default \"enum MessengerUserStatus {\\n ONLINE\\n AWAY\\n BUSY\\n INVISIBLE\\n}\\n\\ntype MessengerUser implements IUser {\\n id: ID!\\n username: String\\n email: String\\n status: MessengerUserStatus\\n avatar: String\\n name: String\\n lastLogin: String\\n channels: [Channel]\\n directMessages: [Channel]\\n}\\n\\nextend type Query{\\n usersToChat(auth0Id:String!):[UserAccount] @isAuthenticated @addAccountContext\\n currentUser(auth0Id:String!):UserAccount @isAuthenticated @addAccountContext\\n}\\n\";","/* eslint-disable import/no-extraneous-dependencies */\nimport { Feature } from '@common-stack/server-core';\nimport MessengerModule from './module';\n\nexport * from './constants';\nexport default new Feature(MessengerModule);\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 } from '@adminide-stack/account-api-server';\nimport { TYPES as ADMINIDE_TYPES } from '@adminide-stack/account-api-core';\nimport { IConfigurationService } from '@adminide-stack/platform-server';\nimport { ServerTypes } from '@adminide-stack/core';\nimport { Schema } from 'mongoose';\nimport { BaseService } from './base-service';\nimport { DEFAULT_NOTIFY_PROPS, TYPES } from '../constants';\nimport {\n IAddMemberParams,\n IChannelRepository,\n ICreateDirectChannelParams,\n INotificationProps,\n IPostService,\n ISaveChannelParams,\n ISaveDirectChannelParams,\n} from '../interfaces';\n\nexport class ChannelService extends BaseService<IChannel, Omit<IChannel, 'id'>> {\n constructor(\n @inject(TYPES.ChannelRepository)\n readonly repository: IChannelRepository,\n @inject(ADMINIDE_TYPES.IAccountService)\n private readonly accountService: IAccountService,\n @inject(ADMINIDE_TYPES.ITeamService)\n private readonly teamsService: ITeamService,\n @inject(TYPES.PostService)\n private readonly postService: IPostService,\n @inject(ServerTypes.IConfigurationService)\n private readonly configService: IConfigurationService,\n ) {\n super(repository);\n }\n\n private static getDmNameFromIds(senderId: string, receiverId: string) {\n return `${senderId}__${receiverId}`;\n }\n\n private static get defaultNotifyProps(): INotificationProps {\n // #Todo: To be moved to settings\n return DEFAULT_NOTIFY_PROPS;\n }\n\n private getMaxChannelsPerTeam(teamId: string): Promise<number> {\n // #Todo: Get Max Channel per team from Team settings\n return Promise.resolve(10);\n }\n\n private async getCurrentChannelCountPerTeam(team: string) {\n return this.repository.count({\n team,\n type: IRoomType.CHANNEL,\n });\n }\n\n async createDirectChannel(data: ICreateDirectChannelParams): Promise<IChannel | Error> {\n const { sender, receiver, displayName } = data;\n const chlMember = [\n {\n user: sender,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n ];\n receiver.forEach((re) => {\n chlMember.push({\n user: re,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n });\n });\n const channelPayload: ISaveDirectChannelParams = {\n title: sender.split('').reverse().join(''),\n type: IRoomType.DIRECT,\n creator: sender,\n members: chlMember,\n displayName,\n };\n return this.saveDirectChannel(channelPayload);\n }\n\n async saveDirectChannel(channel: ISaveDirectChannelParams): Promise<IChannel | Error> {\n const { type, deletedAt } = channel;\n if (deletedAt) {\n return new Error('Deleted Channel can not be saved');\n }\n if (type !== IRoomType.DIRECT) {\n return new Error('Only direct channels are allowed');\n }\n return this.repository.create(channel);\n }\n\n async addMemberToChannel(channelId, memberId): Promise<IChannel | Error> {\n // const { channelId, memberId } = data;\n // console.log('==============================', channelId);\n const resData = await this.repository\n .get({ id: channelId })\n .then(async (res) => {\n const mebs = res.members;\n mebs.push({\n id: '',\n user: memberId,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n });\n const objToUpdate = res;\n objToUpdate.members = mebs;\n const finalResult = await this.repository\n .update({ id: channelId }, objToUpdate, { overwrite: true })\n .then((response) => response)\n .catch((error) => error);\n return finalResult;\n })\n .catch((err) => err);\n return resData;\n }\n\n async saveChannel(data: ISaveChannelParams): Promise<IChannel | Error> {\n const { type, team, creator } = data;\n if (type !== IRoomType.CHANNEL) {\n return new Error('Invalid Channel Type');\n }\n const maxChannels = await this.getMaxChannelsPerTeam(team);\n const currentChannels = await this.getCurrentChannelCountPerTeam(team);\n const canAddNewChannel = currentChannels < maxChannels;\n if (!canAddNewChannel) {\n return Error(`Only max of ${maxChannels} allowed`);\n }\n const channelPayload = {\n ...data,\n members: [\n {\n user: creator,\n schemeAdmin: false,\n notifyProps: ChannelService.defaultNotifyProps,\n },\n ],\n };\n return this.repository.create(channelPayload);\n }\n\n async getChannelUnread(channelId: string, userId: string): Promise<IChannelUnread | Error> {\n const channel: IChannel = await this.repository.get({\n id: channelId,\n members: { user: userId },\n });\n const { members, team, id } = channel;\n const member = members.find((i) => i.user === userId);\n const msgCount = channel.totalMsgCount - member.msgCount;\n const msgCountRoot = channel.totalMsgCountRoot - member.msgCountRoot;\n const { notifyProps, mentionCountRoot, mentionCount } = member;\n\n return {\n channelId: id,\n teamId: team.toString(),\n msgCount,\n msgCountRoot,\n mentionCount,\n notifyProps,\n mentionCountRoot,\n };\n }\n\n async getPinnedPosts(channelId: string): Promise<IPost[] | Error> {\n const posts = await this.postService.getAll({\n criteria: {\n channelId,\n isPinned: true,\n },\n sort: {\n key: 'CreatAt',\n value: ISortEnum.ASC,\n },\n });\n const replyCounts = await Promise.all(\n posts.map((post) => this.postService.count({ rootId: post.rootId || post.id })),\n );\n return posts.reduce((acc, curr, index) => [...acc, { ...curr, replyCount: replyCounts[index] }], []);\n }\n\n restore(channelId: string, time: Date): Promise<IChannel> {\n return this.repository.update(\n { id: channelId },\n {\n deletedAt: time,\n },\n );\n }\n\n getByName(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n });\n }\n\n getByNameIncludeDeleted(team: string, title: string): Promise<IChannel | Error> {\n return this.get({\n team,\n title,\n deletedAt: true,\n });\n }\n\n getByNames(team: string, titles: string[]): Promise<IChannel[] | Error> {\n return this.getAll({\n criteria: {\n team,\n title: { $in: titles },\n },\n });\n }\n\n getChannelCounts(team: string, user: string): Promise<any> {\n return this.count({\n team,\n members: { user },\n });\n }\n\n getChannels(\n team: string,\n user: string,\n includeDeleted: boolean,\n lastDeleteAt: number,\n ): Promise<IChannel[] | Error> {\n return this.repository.getAll({\n // criteria: {\n // team,\n // members: { user },\n // },\n });\n }\n\n deleteChannel(id: string): Promise<boolean | Error> {\n return this.repository.delete({ id });\n }\n}\n","export * from './channel-service';\nexport * from './post-service';\nexport * from './post-thread-service';\nexport * from './reaction-service';\n","import { inject } from 'inversify';\nimport { IFileInfo, IFileRefType , IPost } from '@messenger-box/core';\nimport { File, IFileInfoService, TYPES as FileUploadTypes } from '@container-stack/file-info-core';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { PostRepository } from '../store';\n\nexport class PostService extends BaseService<IPost, Omit<IPost, 'id'>> {\n constructor(\n @inject(TYPES.PostRepository)\n repository: PostRepository,\n @inject(FileUploadTypes.FileInfoService)\n private readonly fileInfoService: IFileInfoService,\n ) {\n super(repository);\n }\n\n async createPost(channelId: any, messageInput: any, userContext: any): Promise<IPost> {\n const { content, files } = messageInput;\n const { accountId } = userContext;\n const postRes: any = await this.repository.create({\n channel: channelId,\n message: content,\n editedBy: accountId,\n author: accountId,\n files: [],\n });\n const uploadedFiles: IFileInfo[] = await Promise.all(\n files.map((file) =>\n this.fileInfoService.create({\n refType: IFileRefType.Post as never,\n file,\n createdBy: accountId,\n ref: postRes.id,\n }),\n ),\n );\n const fls = uploadedFiles.map((r) => r.id);\n return this.repository.update(postRes.id, { files: fls });\n }\n\n async uploadImg(file: Promise<File>, userId: string, postId): Promise<string> {\n const storedImage: any = await this.fileInfoService.create({\n refType: IFileRefType.Post as never,\n file,\n createdBy: userId,\n ref: postId,\n });\n return Promise.resolve(storedImage?.id);\n }\n}\n\n","import { IPostThread } from '@messenger-box/core';\nimport { injectable, inject } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IPostThreadRepository, IPostThreadService } from '../interfaces';\n\n@injectable()\nexport class PostThreadService extends BaseService<IPostThread> implements IPostThreadService {\n constructor(\n @inject(TYPES.PostThreadRepository)\n readonly repository: IPostThreadRepository,\n ) {\n super(repository);\n }\n}\n","import { IReaction, IReactionInput } from '@messenger-box/core';\nimport { inject, injectable } from 'inversify';\nimport { BaseService } from './base-service';\nimport { TYPES } from '../constants';\nimport { IReactionRepository, IReactionService, IReactionServiceInput } from '../interfaces';\n\n@injectable()\nexport class ReactionService\n extends BaseService<IReaction, IReactionServiceInput, Partial<IReactionInput>>\n implements IReactionService\n{\n constructor(\n @inject(TYPES.ReactionRepository)\n readonly reactionRepository: IReactionRepository,\n ) {\n super(reactionRepository);\n }\n}\n","export * from './repositories';\n","import { Connection, Document, Model, Schema } from 'mongoose';\nimport { IChannel, IRoomType } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IChannelModel = Document<IChannel>;\n\nconst channelModelSchema = new Schema(\n {\n type: {\n type: Schema.Types.String,\n enum: [IRoomType.CHANNEL, IRoomType.DIRECT, IRoomType.GROUP, IRoomType.PRIVATE, IRoomType.VISITOR],\n required: true,\n },\n members: [\n new Schema(\n {\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n roles: { type: Schema.Types.String },\n msgCount: { type: Schema.Types.Number },\n mentionCount: { type: Schema.Types.Number },\n mentionCountRoot: { type: Schema.Types.Number },\n msgCountRoot: { type: Schema.Types.Number },\n notifyProps: { type: Schema.Types.Mixed },\n explicitRoles: { type: Schema.Types.String },\n schemeAdmin: { type: Schema.Types.String },\n lastViewedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n },\n commonModeSchemaOptions,\n ),\n ],\n deletedAt: { type: Schema.Types.Date },\n lastPostAt: { type: Schema.Types.Date },\n totalMsgCount: { type: Schema.Types.Number },\n totalMsgCountRoot: { type: Schema.Types.Number },\n team: { type: Schema.Types.ObjectId, ref: 'team' },\n title: { type: Schema.Types.String },\n displayName: { type: Schema.Types.String },\n description: { type: Schema.Types.String },\n purpose: { type: Schema.Types.String },\n creator: { type: Schema.Types.ObjectId, ref: 'accounts' },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(channelModelSchema);\n\nexport type ChannelModelType = Model<IChannelModel>;\nexport const ChannelModelFunc: (db: Connection) => ChannelModelType = (db) =>\n db.model<IChannelModel>('channel', channelModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { Schema } from 'mongoose';\n\nexport const commonModeSchemaOptions = {\n timestamps: true,\n toJSON: {\n virtuals: true,\n },\n toObject: {\n virtuals: true,\n getters: true,\n transform(doc, ret) {\n delete ret.__v;\n delete ret._id;\n },\n },\n};\n\nexport const addIdVirtualFields = (schema: Schema) => {\n schema.set('toJSON', {\n virtuals: true,\n });\n return schema;\n};\n","export * from './channel';\nexport * from './post';\nexport * from './post-thread';\nexport * from './reaction';\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPostThread } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IThreadsModel = Document<IPostThread>;\n\nconst postThreadModelSchema = new Schema(\n {\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n replyCount: { type: Schema.Types.Number },\n lastReplyAt: { type: Schema.Types.Date },\n participants: [{ type: Schema.Types.ObjectId, ref: 'accounts' }],\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postThreadModelSchema);\n\nexport type PostThreadModelType = Model<IThreadsModel>;\nexport const PostThreadModelFunc: (db: Connection) => PostThreadModelType = (db) =>\n db.model<IThreadsModel>('post-threads', postThreadModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IPost } from '@messenger-box/core';\nimport { addIdVirtualFields, commonModeSchemaOptions } from './common-options';\n\nexport type IPostModel = Document<IPost>;\n\nconst postModelSchema = new Schema(\n {\n createdAt: { type: Schema.Types.Date },\n editedAt: { type: Schema.Types.Date },\n deletedAt: { type: Schema.Types.Date },\n editedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\n deletedBy: { type: Schema.Types.ObjectId, ref: 'accounts' },\n channel: { type: Schema.Types.ObjectId, ref: 'channels' },\n rootId: { type: Schema.Types.String },\n parentId: { type: Schema.Types.String },\n originalId: { type: Schema.Types.String },\n message: { type: Schema.Types.String },\n type: { type: Schema.Types.String },\n props: { type: Schema.Types.Mixed },\n hashtags: { type: Schema.Types.Mixed },\n filenames: { type: Schema.Types.Mixed },\n fields: { type: Schema.Types.String },\n files: [{ type: Schema.Types.ObjectId }],\n hasReactions: { type: Schema.Types.Boolean },\n },\n commonModeSchemaOptions,\n);\n\naddIdVirtualFields(postModelSchema);\n\nexport type PostModelType = Model<IPostModel>;\nexport const PostModelFunc: (db: Connection) => PostModelType = (db) => db.model<IPostModel>('posts', postModelSchema);\n","import { Document, Schema, Model, Connection } from 'mongoose';\nimport { IReaction } from '@messenger-box/core';\nimport { addIdVirtualFields } from './common-options';\n\nexport type IReactionModel = Document<IReaction>;\n\nconst reactionModelSchema = new Schema({\n createdAt: { type: Schema.Types.Date },\n reaction: { type: Schema.Types.String },\n user: { type: Schema.Types.ObjectId, ref: 'accounts' },\n post: { type: Schema.Types.ObjectId, ref: 'posts' },\n});\n\naddIdVirtualFields(reactionModelSchema);\n\nexport type ReactionModelType = Model<IReactionModel>;\nexport const ReactionModelFunc: (db: Connection) => ReactionModelType = (db) =>\n db.model<IReactionModel>('reactions', reactionModelSchema);\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { mergeWith, isObject } from 'lodash';\nimport { logger as Logger } from '@cdm-logger/server';\n// eslint-disable-next-line import/no-unresolved\nimport { IMongoOptions } from '@common-stack/store-mongo';\nimport { Connection, Document, FilterQuery, Model } from 'mongoose';\nimport { injectable, unmanaged } from 'inversify';\nimport { GetAllArgs, IBaseRepository } from '../../interfaces';\nimport { DEFAULT_SORTING, PAGINATION_OPTIONS } from '../../constants';\n\n@injectable()\nexport class BaseRepository<T, D = Document<T>> implements IBaseRepository<T, D> {\n private options: IMongoOptions;\n\n private logger: typeof Logger;\n\n private model: Model<D>;\n\n constructor(\n @unmanaged()\n modelFunc: (db: Connection) => Model<D>,\n @unmanaged()\n db: Connection,\n @unmanaged()\n logger: typeof Logger,\n @unmanaged()\n options?: IMongoOptions,\n ) {\n this.model = modelFunc(db);\n this.options = options;\n this.logger = logger.child({ className: BaseRepository.name });\n }\n\n public async getAll(options: GetAllArgs<D>): Promise<T[]> {\n try {\n const { criteria, selectedFields, sort, limit, skip } = options;\n // map id to mongoose _id\n const { id, ...rest } = criteria || { id: undefined };\n const 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-core\");","module.exports = require(\"@adminide-stack/core\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"@container-stack/file-info-core\");","module.exports = require(\"@messenger-box/core\");","module.exports = require(\"graphql-iso-date\");","module.exports = require(\"inversify\");","module.exports = require(\"lodash\");","module.exports = require(\"mongoose\");"],"sourceRoot":""}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { IPost } from '@messenger-box/core';
|
|
2
2
|
import { IBaseService } from './base-service';
|
|
3
|
-
export
|
|
3
|
+
export interface IPostService extends IBaseService<IPost, Omit<IPost, 'id'>> {
|
|
4
|
+
uploadImg(file: any, userId: string, postId: string): Promise<string>;
|
|
5
|
+
createPost(channelId: any, messageInput: any, userContext: any): Promise<IPost>;
|
|
6
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IFileInfoService } from '@container-stack/file-info-core';
|
|
1
2
|
import { IChannelService } from './channel-service';
|
|
2
3
|
import { IPostService } from './post-service';
|
|
3
4
|
import { IPostThreadService } from './post-thread-service';
|
|
@@ -7,4 +8,5 @@ export interface IServices {
|
|
|
7
8
|
postService: IPostService;
|
|
8
9
|
postThreadService: IPostThreadService;
|
|
9
10
|
reactionService: IReactionService;
|
|
11
|
+
fileInfoService?: IFileInfoService;
|
|
10
12
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { IPost } from '@messenger-box/core';
|
|
2
|
+
import { File, IFileInfoService } from '@container-stack/file-info-core';
|
|
2
3
|
import { BaseService } from './base-service';
|
|
3
4
|
import { PostRepository } from '../store';
|
|
4
|
-
export declare class PostService extends BaseService<IPost
|
|
5
|
-
|
|
5
|
+
export declare class PostService extends BaseService<IPost, Omit<IPost, 'id'>> {
|
|
6
|
+
private readonly fileInfoService;
|
|
7
|
+
constructor(repository: PostRepository, fileInfoService: IFileInfoService);
|
|
8
|
+
createPost(channelId: any, messageInput: any, userContext: any): Promise<IPost>;
|
|
9
|
+
uploadImg(file: Promise<File>, userId: string, postId: any): Promise<string>;
|
|
6
10
|
}
|
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.124",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@adminide-stack/account-api-server": "1.1.1-alpha.183",
|
|
42
|
-
"@messenger-box/core": "0.0.1-alpha.
|
|
42
|
+
"@messenger-box/core": "0.0.1-alpha.124",
|
|
43
43
|
"aws-sdk": "^2.978.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"@adminide-stack/platform-server": "*",
|
|
49
49
|
"@cdm-logger/server": "*",
|
|
50
50
|
"@common-stack/store-mongo": "*",
|
|
51
|
+
"@container-stack/file-info-core": "*",
|
|
51
52
|
"@vscode-alt/monaco-editor": "*",
|
|
52
53
|
"graphql-iso-date": "*",
|
|
53
54
|
"inversify": "*",
|
|
@@ -59,5 +60,5 @@
|
|
|
59
60
|
"typescript": {
|
|
60
61
|
"definition": "lib/index.d.ts"
|
|
61
62
|
},
|
|
62
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "b869acefe1fd4114012c088403c55167e4d80bab"
|
|
63
64
|
}
|