UNPKG

12.8 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/utils/getActiveRules.js"],"names":["updateRules","ctx","bot","botsModule","module","BotsUserDataModel","fromId","getUserId","data","telegramUserId","$exists","find","select","lean","userRules","rules","map","info","getActiveRules","pack","message","getMessage","userId","chatType","getMessageChatType","chatId","getMessageChatId","messageType","getMessageType","messageText","getMessageText","stickerEmoji","sticker","emoji","stickerSetName","set_name","nextRoute","getNextRoute","call","log","trace","length","checkUserId","item","Array","isArray","checkChatType","checkChatId","checkMessageType","checkMessageText","RegExp","test","checkStickerEmoji","checkStickerSetName","checkNextRoute","checkCriteria","activeRules","filter","rule","criteria","action"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;SAEeA,W;;;;;+FAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAA6BC,YAAAA,GAA7B,QAA6BA,GAA7B,EAAkCC,GAAlC,QAAkCA,GAAlC;AAAA;AAAA,mBACkC,KAAKC,UAAL,CAAgBC,MAAhB,CAAuB,0BAAvB,CADlC;;AAAA;AACQC,YAAAA,iBADR;AAEQC,YAAAA,MAFR,GAEiBJ,GAAG,CAACK,SAAJ,CAAcN,GAAd,CAFjB;AAGQO,YAAAA,IAHR,GAGe;AACXC,cAAAA,cAAc,EAAEH,MADL;AAEX,4BAAc;AAAEI,gBAAAA,OAAO,EAAE;AAAX;AAFH,aAHf;AAAA;AAAA,mBAQ0BL,iBAAiB,CAACM,IAAlB,CAAuBH,IAAvB,EAA6BI,MAA7B,CAAoC,YAApC,EAAkDC,IAAlD,EAR1B;;AAAA;AAQQC,YAAAA,SARR;AASQC,YAAAA,KATR,GASgB,yBAAQD,SAAS,CAACE,GAAV,CAAc;AAAA,kBAAGC,IAAH,SAAGA,IAAH;AAAA,qBAAcA,IAAI,CAACF,KAAnB;AAAA,aAAd,CAAR,CAThB;AAAA,2FAWa,KAAKA,KAXlB,uCAW4BA,KAX5B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAc8BG,c;;;;;kGAAf;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,+EAA6C,EAA7C,EAAgCjB,GAAhC,SAAgCA,GAAhC,EAAqCC,GAArC,SAAqCA,GAArC;AACPiB,YAAAA,IADO,GACA,EADA;AAEPC,YAAAA,OAFO,GAEGlB,GAAG,CAACmB,UAAJ,CAAepB,GAAf,CAFH;AAGbkB,YAAAA,IAAI,CAACG,MAAL,GAAcpB,GAAG,CAACK,SAAJ,CAAcN,GAAd,CAAd;AACAkB,YAAAA,IAAI,CAACI,QAAL,GAAgBrB,GAAG,CAACsB,kBAAJ,CAAuBvB,GAAvB,CAAhB;AACAkB,YAAAA,IAAI,CAACM,MAAL,GAAcvB,GAAG,CAACwB,gBAAJ,CAAqBzB,GAArB,CAAd;AACAkB,YAAAA,IAAI,CAACQ,WAAL,GAAmBzB,GAAG,CAAC0B,cAAJ,CAAmB3B,GAAnB,CAAnB;AACAkB,YAAAA,IAAI,CAACU,WAAL,GAAmB3B,GAAG,CAAC4B,cAAJ,CAAmB7B,GAAnB,CAAnB;AACAkB,YAAAA,IAAI,CAACY,YAAL,uBAAoBX,OAAO,CAACY,OAA5B,qDAAoB,iBAAiBC,KAArC;AACAd,YAAAA,IAAI,CAACe,cAAL,wBAAsBd,OAAO,CAACY,OAA9B,sDAAsB,kBAAiBG,QAAvC;AACAhB,YAAAA,IAAI,CAACiB,SAAL,GAAiBlC,GAAG,CAACmC,YAAJ,CAAiBpC,GAAjB,CAAjB;AAVa;AAAA,mBAYOD,WAAW,CAACsC,IAAZ,CAAiB,IAAjB,EAAuB;AAAErC,cAAAA,GAAG,EAAHA,GAAF;AAAOC,cAAAA,GAAG,EAAHA;AAAP,aAAvB,CAZP;;AAAA;AAYPa,YAAAA,KAZO;AAcb,iBAAKwB,GAAL,CAASC,KAAT,CAAe,sBAAf,EAAuCzB,KAAK,CAAC0B,MAA7C,EAda,CAgBb;;AACMC,YAAAA,WAjBO,GAiBO,SAAdA,WAAc,CAACC,IAAD,EAAU;AAC5B,kBAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB,OAAO,sBAAKA,IAAL,EAAWD,WAAX,CAAP;AACzB,kBAAI,4BAAWC,IAAX,KAAoB,CAACA,IAAI,CAACxB,IAAD,CAA7B,EAAqC,OAAO,KAAP;AACrC,qBAAOwB,IAAI,KAAKxB,IAAI,CAACG,MAArB,CAH4B,CAI5B;AACD,aAtBY;;AAuBPwB,YAAAA,aAvBO,GAuBS,SAAhBA,aAAgB,CAACH,IAAD,EAAU;AAC9B,kBAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB,OAAO,sBAAKA,IAAL,EAAWG,aAAX,CAAP;AACzB,kBAAI,4BAAWH,IAAX,KAAoB,CAACA,IAAI,CAACxB,IAAD,CAA7B,EAAqC,OAAO,KAAP;AACrC,qBAAOwB,IAAI,KAAKxB,IAAI,CAACI,QAArB;AACD,aA3BY;;AA4BPwB,YAAAA,WA5BO,GA4BO,SAAdA,WAAc,CAACJ,IAAD,EAAU;AAC5B,kBAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB,OAAO,sBAAKA,IAAL,EAAWI,WAAX,CAAP;AACzB,kBAAI,4BAAWJ,IAAX,KAAoB,CAACA,IAAI,CAACxB,IAAD,CAA7B,EAAqC,OAAO,KAAP;AACrC,qBAAOwB,IAAI,KAAKxB,IAAI,CAACM,MAArB,CAH4B,CAI5B;AACD,aAjCY;;AAkCPuB,YAAAA,gBAlCO,GAkCY,SAAnBA,gBAAmB,CAACL,IAAD,EAAU;AACjC,kBAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB,OAAO,sBAAKA,IAAL,EAAWK,gBAAX,CAAP;AACzB,kBAAI,4BAAWL,IAAX,KAAoB,CAACA,IAAI,CAACxB,IAAD,CAA7B,EAAqC,OAAO,KAAP;AACrC,qBAAOwB,IAAI,KAAKxB,IAAI,CAACQ,WAArB;AACD,aAtCY;;AAuCPsB,YAAAA,gBAvCO,GAuCY,SAAnBA,gBAAmB,CAACN,IAAD,EAAU;AACjC,kBAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB,OAAO,sBAAKA,IAAL,EAAWM,gBAAX,CAAP;AACzB,kBAAI,4BAAWN,IAAX,KAAoB,CAACA,IAAI,CAACxB,IAAD,CAA7B,EAAqC,OAAO,KAAP;AACrC,kBAAIwB,IAAI,YAAYO,MAApB,EAA4B,OAAOP,IAAI,CAACQ,IAAL,CAAUhC,IAAI,CAACU,WAAf,CAAP;AAC5B,qBAAOc,IAAI,KAAKxB,IAAI,CAACU,WAArB;AACD,aA5CY;;AA6CPuB,YAAAA,iBA7CO,GA6Ca,SAApBA,iBAAoB,CAACT,IAAD,EAAU;AAClC,kBAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB,OAAO,sBAAKA,IAAL,EAAWS,iBAAX,CAAP;AACzB,kBAAI,4BAAWT,IAAX,KAAoB,CAACA,IAAI,CAACxB,IAAD,CAA7B,EAAqC,OAAO,KAAP;AACrC,kBAAIwB,IAAI,YAAYO,MAApB,EAA4B,OAAOP,IAAI,CAACQ,IAAL,CAAUhC,IAAI,CAACY,YAAf,CAAP;AAC5B,qBAAOY,IAAI,KAAKxB,IAAI,CAACY,YAArB;AACD,aAlDY;;AAmDPsB,YAAAA,mBAnDO,GAmDe,SAAtBA,mBAAsB,CAACV,IAAD,EAAU;AACpC,kBAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB,OAAO,sBAAKA,IAAL,EAAWU,mBAAX,CAAP;AACzB,kBAAI,4BAAWV,IAAX,KAAoB,CAACA,IAAI,CAACxB,IAAD,CAA7B,EAAqC,OAAO,KAAP;AACrC,kBAAIwB,IAAI,YAAYO,MAApB,EAA4B,OAAOP,IAAI,CAACQ,IAAL,CAAUhC,IAAI,CAACe,cAAf,CAAP;AAC5B,qBAAOS,IAAI,KAAKxB,IAAI,CAACe,cAArB;AACD,aAxDY;;AAyDPoB,YAAAA,cAzDO,GAyDU,SAAjBA,cAAiB,CAACX,IAAD,EAAU;AAC/B,kBAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB,OAAO,sBAAKA,IAAL,EAAWW,cAAX,CAAP;AACzB,kBAAI,4BAAWX,IAAX,KAAoB,CAACA,IAAI,CAACxB,IAAD,CAA7B,EAAqC,OAAO,KAAP;AACrC,kBAAIwB,IAAI,YAAYO,MAApB,EAA4B,OAAOP,IAAI,CAACQ,IAAL,CAAUhC,IAAI,CAACiB,SAAf,CAAP;AAC5B,qBAAOO,IAAI,KAAKxB,IAAI,CAACiB,SAArB;AACD,aA9DY;;AAgEPmB,YAAAA,aAhEO,GAgES,SAAhBA,aAAgB,CAACZ,IAAD,EAAU;AAC9B,kBAAIC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAJ,EAAyB,OAAO,sBAAKA,IAAL,EAAWY,aAAX,CAAP;AACzB,kBAAI,4BAAWZ,IAAX,KAAoB,CAACA,IAAI,CAACxB,IAAD,CAA7B,EAAqC,OAAO,KAAP;AACrC,kBAAQG,MAAR,GAAwGqB,IAAxG,CAAQrB,MAAR;AAAA,kBAAgBC,QAAhB,GAAwGoB,IAAxG,CAAgBpB,QAAhB;AAAA,kBAA0BE,MAA1B,GAAwGkB,IAAxG,CAA0BlB,MAA1B;AAAA,kBAAkCE,WAAlC,GAAwGgB,IAAxG,CAAkChB,WAAlC;AAAA,kBAA+CE,WAA/C,GAAwGc,IAAxG,CAA+Cd,WAA/C;AAAA,kBAA4DE,YAA5D,GAAwGY,IAAxG,CAA4DZ,YAA5D;AAAA,kBAA0EG,cAA1E,GAAwGS,IAAxG,CAA0ET,cAA1E;AAAA,kBAA0FE,SAA1F,GAAwGO,IAAxG,CAA0FP,SAA1F;;AACA,kBAAId,MAAM,IAAI,CAACoB,WAAW,CAACpB,MAAD,CAA1B,EAAoC;AAClC,gBAAA,KAAI,CAACiB,GAAL,CAASC,KAAT,CAAe,cAAf;;AACA,uBAAO,KAAP;AACD;;AACD,kBAAIjB,QAAQ,IAAI,CAACuB,aAAa,CAACvB,QAAD,CAA9B,EAA0C;AACxC,gBAAA,KAAI,CAACgB,GAAL,CAASC,KAAT,CAAe,gBAAf;;AACA,uBAAO,KAAP;AACD;;AACD,kBAAIf,MAAM,IAAI,CAACsB,WAAW,CAACtB,MAAD,CAA1B,EAAoC;AAClC,gBAAA,KAAI,CAACc,GAAL,CAASC,KAAT,CAAe,cAAf;;AACA,uBAAO,KAAP;AACD;;AACD,kBAAIb,WAAW,IAAI,CAACqB,gBAAgB,CAACrB,WAAD,CAApC,EAAmD;AACjD,gBAAA,KAAI,CAACY,GAAL,CAASC,KAAT,CAAe,mBAAf;;AACA,uBAAO,KAAP;AACD;;AACD,kBAAIX,WAAW,IAAI,CAACoB,gBAAgB,CAACpB,WAAD,CAApC,EAAmD;AACjD,gBAAA,KAAI,CAACU,GAAL,CAASC,KAAT,CAAe,mBAAf;;AACA,uBAAO,KAAP;AACD;;AACD,kBAAIT,YAAY,IAAI,CAACqB,iBAAiB,CAACrB,YAAD,CAAtC,EAAsD;AACpD,gBAAA,KAAI,CAACQ,GAAL,CAASC,KAAT,CAAe,oBAAf;;AACA,uBAAO,KAAP;AACD;;AACD,kBAAIN,cAAc,IAAI,CAACmB,mBAAmB,CAACnB,cAAD,CAA1C,EAA4D;AAC1D,gBAAA,KAAI,CAACK,GAAL,CAASC,KAAT,CAAe,sBAAf;;AACA,uBAAO,KAAP;AACD;;AACD,kBAAIJ,SAAS,IAAI,CAACkB,cAAc,CAAClB,SAAD,CAAhC,EAA6C;AAC3C,gBAAA,KAAI,CAACG,GAAL,CAASC,KAAT,CAAe,iBAAf;;AACA,uBAAO,KAAP;AACD;;AACD,qBAAO,IAAP;AACD,aArGY;;AAuGPgB,YAAAA,WAvGO,GAuGOzC,KAAK,CAAC0C,MAAN,CAAa,UAACC,IAAD,EAAU;AACzC,kBAAQC,QAAR,GAA6BD,IAA7B,CAAQC,QAAR;AAAA,kBAAkBC,MAAlB,GAA6BF,IAA7B,CAAkBE,MAAlB;AAEA,kBAAI,CAACD,QAAL,EAAe,OAAO,KAAP;;AAEf,kBAAI,CAACJ,aAAa,CAACI,QAAD,CAAlB,EAA8B;AAC5B,gBAAA,KAAI,CAACpB,GAAL,CAASC,KAAT,CAAe,gBAAf;;AACA,uBAAO,KAAP;AACD;;AACD,kBAAI,CAACoB,MAAL,EAAa;AACX,gBAAA,KAAI,CAACrB,GAAL,CAASC,KAAT,CAAe,SAAf;;AACA,uBAAO,KAAP;AACD;;AACD,qBAAO,IAAP;AACD,aAdmB,CAvGP;AAuHb,iBAAKD,GAAL,CAASC,KAAT,CAAe,gBAAf,EAAiCrB,IAAjC,EAAuC,IAAvC,EAA6CqC,WAA7C;AAvHa,8CAyHNA,WAzHM;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import flatten from 'lodash/flatten';\nimport isFunction from 'lodash/isFunction';\nimport some from 'lodash/some';\n\nasync function updateRules({ ctx, bot }) {\n const BotsUserDataModel = await this.botsModule.module('models.BotsUserDataModel');\n const fromId = bot.getUserId(ctx);\n const data = {\n telegramUserId: fromId,\n 'info.rules': { $exists: true },\n };\n\n const userRules = await BotsUserDataModel.find(data).select('info.rules').lean();\n const rules = flatten(userRules.map(({ info }) => info.rules));\n\n return [...this.rules, ...rules];\n}\n\nexport default async function getActiveRules({ ctx, bot } = {}) {\n const pack = {};\n const message = bot.getMessage(ctx);\n pack.userId = bot.getUserId(ctx);\n pack.chatType = bot.getMessageChatType(ctx);\n pack.chatId = bot.getMessageChatId(ctx);\n pack.messageType = bot.getMessageType(ctx);\n pack.messageText = bot.getMessageText(ctx);\n pack.stickerEmoji = message.sticker?.emoji;\n pack.stickerSetName = message.sticker?.set_name;\n pack.nextRoute = bot.getNextRoute(ctx);\n\n const rules = await updateRules.call(this, { ctx, bot });\n\n this.log.trace('getActiveRules rules', rules.length);\n\n // TODO: подумать как унифицировать, функции абсолютно одинаковые\n const checkUserId = (item) => {\n if (Array.isArray(item)) return some(item, checkUserId);\n if (isFunction(item) && !item(pack)) return false;\n return item === pack.userId;\n // return ['number', 'string'].includes(typeof item) && String(item) === String(pack.userId); // TODO: подумать нужна ли проверка на тип и приведение к строке\n };\n const checkChatType = (item) => {\n if (Array.isArray(item)) return some(item, checkChatType);\n if (isFunction(item) && !item(pack)) return false;\n return item === pack.chatType;\n };\n const checkChatId = (item) => {\n if (Array.isArray(item)) return some(item, checkChatId);\n if (isFunction(item) && !item(pack)) return false;\n return item === pack.chatId;\n // return ['number', 'string'].includes(typeof item) && String(item) === String(pack.chatId); // TODO: подумать нужна ли проверка на тип и приведение к строке\n };\n const checkMessageType = (item) => {\n if (Array.isArray(item)) return some(item, checkMessageType);\n if (isFunction(item) && !item(pack)) return false;\n return item === pack.messageType;\n };\n const checkMessageText = (item) => {\n if (Array.isArray(item)) return some(item, checkMessageText);\n if (isFunction(item) && !item(pack)) return false;\n if (item instanceof RegExp) return item.test(pack.messageText);\n return item === pack.messageText;\n };\n const checkStickerEmoji = (item) => {\n if (Array.isArray(item)) return some(item, checkStickerEmoji);\n if (isFunction(item) && !item(pack)) return false;\n if (item instanceof RegExp) return item.test(pack.stickerEmoji);\n return item === pack.stickerEmoji;\n };\n const checkStickerSetName = (item) => {\n if (Array.isArray(item)) return some(item, checkStickerSetName);\n if (isFunction(item) && !item(pack)) return false;\n if (item instanceof RegExp) return item.test(pack.stickerSetName);\n return item === pack.stickerSetName;\n };\n const checkNextRoute = (item) => {\n if (Array.isArray(item)) return some(item, checkNextRoute);\n if (isFunction(item) && !item(pack)) return false;\n if (item instanceof RegExp) return item.test(pack.nextRoute);\n return item === pack.nextRoute;\n };\n\n const checkCriteria = (item) => {\n if (Array.isArray(item)) return some(item, checkCriteria);\n if (isFunction(item) && !item(pack)) return false;\n const { userId, chatType, chatId, messageType, messageText, stickerEmoji, stickerSetName, nextRoute } = item;\n if (userId && !checkUserId(userId)) {\n this.log.trace('!checkUserId');\n return false;\n }\n if (chatType && !checkChatType(chatType)) {\n this.log.trace('!checkChatType');\n return false;\n }\n if (chatId && !checkChatId(chatId)) {\n this.log.trace('!checkChatId');\n return false;\n }\n if (messageType && !checkMessageType(messageType)) {\n this.log.trace('!checkMessageType');\n return false;\n }\n if (messageText && !checkMessageText(messageText)) {\n this.log.trace('!checkMessageText');\n return false;\n }\n if (stickerEmoji && !checkStickerEmoji(stickerEmoji)) {\n this.log.trace('!checkStickerEmoji');\n return false;\n }\n if (stickerSetName && !checkStickerSetName(stickerSetName)) {\n this.log.trace('!checkStickerSetName');\n return false;\n }\n if (nextRoute && !checkNextRoute(nextRoute)) {\n this.log.trace('!checkNextRoute');\n return false;\n }\n return true;\n };\n\n const activeRules = rules.filter((rule) => {\n const { criteria, action } = rule;\n\n if (!criteria) return false;\n\n if (!checkCriteria(criteria)) {\n this.log.trace('!checkCriteria');\n return false;\n }\n if (!action) {\n this.log.trace('!action');\n return false;\n }\n return true;\n });\n\n this.log.trace('getActiveRules', pack, '=>', activeRules);\n\n return activeRules;\n}\n"],"file":"getActiveRules.js"}
\No newline at end of file