@resolveio/server-lib 1.0.0-rc4 → 1.0.0-rc6

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.
Files changed (157) hide show
  1. package/collections/active-subscription.collection.d.ts +8 -0
  2. package/collections/active-subscription.collection.js +68 -2
  3. package/collections/app-status.collection.d.ts +8 -0
  4. package/collections/app-status.collection.js +43 -2
  5. package/collections/app-version.collection.d.ts +8 -0
  6. package/collections/app-version.collection.js +56 -2
  7. package/collections/counter.collection.d.ts +10 -0
  8. package/collections/counter.collection.js +73 -2
  9. package/collections/cron-job-history.collection.d.ts +8 -0
  10. package/collections/cron-job-history.collection.js +86 -2
  11. package/collections/cron-job.collection.d.ts +8 -0
  12. package/collections/cron-job.collection.js +89 -2
  13. package/collections/file.collection.d.ts +10 -0
  14. package/collections/file.collection.js +73 -2
  15. package/collections/flag.collection.d.ts +8 -0
  16. package/collections/flag.collection.js +47 -2
  17. package/collections/log.collection.d.ts +8 -0
  18. package/collections/log.collection.js +64 -2
  19. package/collections/logged-in-users.collection.d.ts +8 -0
  20. package/collections/logged-in-users.collection.js +70 -2
  21. package/collections/method-call.collection.d.ts +7 -0
  22. package/collections/method-call.collection.js +44 -2
  23. package/collections/method-response.collection.d.ts +7 -0
  24. package/collections/method-response.collection.js +48 -2
  25. package/collections/queue-flag.collection.d.ts +8 -0
  26. package/collections/queue-flag.collection.js +41 -2
  27. package/collections/queue-method.collection.d.ts +8 -0
  28. package/collections/queue-method.collection.js +116 -2
  29. package/collections/queue-response.collection.d.ts +8 -0
  30. package/collections/queue-response.collection.js +78 -2
  31. package/collections/support-ticket.collection.d.ts +8 -0
  32. package/collections/support-ticket.collection.js +146 -2
  33. package/collections/user.collection.d.ts +9 -0
  34. package/collections/user.collection.js +108 -2
  35. package/cron/cron.d.ts +6 -0
  36. package/cron/cron.js +160 -2
  37. package/fixtures/cron-jobs.d.ts +2 -0
  38. package/fixtures/cron-jobs.js +72 -2
  39. package/fixtures/init.d.ts +2 -0
  40. package/fixtures/init.js +73 -2
  41. package/http/auth.d.ts +3 -0
  42. package/http/auth.js +472 -2
  43. package/http/health.d.ts +2 -0
  44. package/http/health.js +8 -2
  45. package/index.d.ts +14 -0
  46. package/index.js +97 -2
  47. package/managers/cron.manager.d.ts +17 -0
  48. package/managers/cron.manager.js +193 -2
  49. package/managers/method.manager.d.ts +27 -0
  50. package/managers/method.manager.js +513 -2
  51. package/managers/queue-method.manager.d.ts +14 -0
  52. package/managers/queue-method.manager.js +239 -2
  53. package/managers/subscription.manager.d.ts +27 -0
  54. package/managers/subscription.manager.js +700 -2
  55. package/managers/support.manager.d.ts +18 -0
  56. package/managers/support.manager.js +208 -2
  57. package/methods/accounts.d.ts +3 -0
  58. package/methods/accounts.js +253 -2
  59. package/methods/aws.d.ts +3 -0
  60. package/methods/aws.js +323 -2
  61. package/methods/cloudconvert.d.ts +3 -0
  62. package/methods/cloudconvert.js +37 -2
  63. package/methods/collections.d.ts +3 -0
  64. package/methods/collections.js +738 -2
  65. package/methods/counters.d.ts +3 -0
  66. package/methods/counters.js +404 -2
  67. package/methods/cron-jobs.d.ts +3 -0
  68. package/methods/cron-jobs.js +63 -2
  69. package/methods/flags.d.ts +3 -0
  70. package/methods/flags.js +6 -2
  71. package/methods/logs.d.ts +3 -0
  72. package/methods/logs.js +29 -2
  73. package/methods/pdf.d.ts +3 -0
  74. package/methods/pdf.js +303 -2
  75. package/models/active-subscription.model.d.ts +14 -0
  76. package/models/active-subscription.model.js +2 -2
  77. package/models/app-status.model.d.ts +5 -0
  78. package/models/app-status.model.js +2 -2
  79. package/models/app-version.model.d.ts +5 -0
  80. package/models/app-version.model.js +2 -2
  81. package/models/collection-document.model.d.ts +7 -0
  82. package/models/collection-document.model.js +2 -2
  83. package/models/counter.model.d.ts +6 -0
  84. package/models/counter.model.js +2 -2
  85. package/models/cron-job-history.model.d.ts +13 -0
  86. package/models/cron-job-history.model.js +2 -2
  87. package/models/cron-job.model.d.ts +14 -0
  88. package/models/cron-job.model.js +2 -2
  89. package/models/dialog.model.d.ts +24 -0
  90. package/models/dialog.model.js +2 -2
  91. package/models/file.model.d.ts +10 -0
  92. package/models/file.model.js +2 -2
  93. package/models/flag.model.d.ts +6 -0
  94. package/models/flag.model.js +2 -2
  95. package/models/log.model.d.ts +12 -0
  96. package/models/log.model.js +2 -2
  97. package/models/logged-in-users.model.d.ts +10 -0
  98. package/models/logged-in-users.model.js +2 -2
  99. package/models/method-call.model.d.ts +8 -0
  100. package/models/method-call.model.js +2 -2
  101. package/models/method-response.model.d.ts +9 -0
  102. package/models/method-response.model.js +2 -2
  103. package/models/method.model.d.ts +11 -0
  104. package/models/method.model.js +2 -2
  105. package/models/pagination.model.d.ts +12 -0
  106. package/models/pagination.model.js +20 -2
  107. package/models/permission.model.d.ts +13 -0
  108. package/models/permission.model.js +2 -2
  109. package/models/queue-method.model.d.ts +10 -0
  110. package/models/queue-method.model.js +2 -2
  111. package/models/queue-response.model.d.ts +11 -0
  112. package/models/queue-response.model.js +2 -2
  113. package/models/select-data-label.model.d.ts +10 -0
  114. package/models/select-data-label.model.js +2 -2
  115. package/models/server-response.model.d.ts +6 -0
  116. package/models/server-response.model.js +2 -2
  117. package/models/subscription.model.d.ts +31 -0
  118. package/models/subscription.model.js +2 -2
  119. package/models/support-method.model.d.ts +10 -0
  120. package/models/support-method.model.js +2 -2
  121. package/models/support-ticket.model.d.ts +40 -0
  122. package/models/support-ticket.model.js +2 -2
  123. package/models/user.model.d.ts +15 -0
  124. package/models/user.model.js +2 -2
  125. package/package.json +3 -1
  126. package/publications/app-status.d.ts +3 -0
  127. package/publications/app-status.js +14 -2
  128. package/publications/app-version.d.ts +3 -0
  129. package/publications/app-version.js +14 -2
  130. package/publications/cron-jobs.d.ts +3 -0
  131. package/publications/cron-jobs.js +14 -2
  132. package/publications/files.d.ts +3 -0
  133. package/publications/files.js +71 -2
  134. package/publications/flags.d.ts +3 -0
  135. package/publications/flags.js +23 -2
  136. package/publications/logs.d.ts +3 -0
  137. package/publications/logs.js +26 -2
  138. package/publications/method-calls.d.ts +3 -0
  139. package/publications/method-calls.js +14 -2
  140. package/publications/method-responses.d.ts +3 -0
  141. package/publications/method-responses.js +14 -2
  142. package/publications/super-admin.d.ts +3 -0
  143. package/publications/super-admin.js +21 -2
  144. package/publications/support-tickets.d.ts +2 -0
  145. package/publications/support-tickets.js +118 -2
  146. package/server-app.d.ts +33 -0
  147. package/server-app.js +598 -2
  148. package/support-methods/aws.d.ts +3 -0
  149. package/support-methods/aws.js +276 -2
  150. package/support-methods/collections.d.ts +3 -0
  151. package/support-methods/collections.js +471 -2
  152. package/support-methods/counters.d.ts +3 -0
  153. package/support-methods/counters.js +189 -2
  154. package/support-methods/support.d.ts +3 -0
  155. package/support-methods/support.js +19 -2
  156. package/util/common.d.ts +15 -0
  157. package/util/common.js +334 -2
@@ -0,0 +1,18 @@
1
+ import { SupportMethodModel } from '../models/support-method.model';
2
+ import { ResolveIOMainServer } from '../server-app';
3
+ export declare class SupportManager {
4
+ private _mainServer;
5
+ _supportMethods: SupportMethodModel;
6
+ private _mailer;
7
+ private _aws;
8
+ private serverConfig;
9
+ private _sendQueue;
10
+ private _runningQueue;
11
+ constructor(mainServer: any, serverConfig: any);
12
+ getMainServer(): ResolveIOMainServer;
13
+ supportMethods(supportMethod: SupportMethodModel): void;
14
+ callSupportMethod(ws: WebSocket, messageId: any, supportMethod: any, ...methodData: any[]): void;
15
+ private sendWS;
16
+ sendEmail(sendTo: string, subject: string, text?: string, html?: string, attachments?: any[]): void;
17
+ }
18
+ //# sourceMappingURL=support.manager.d.ts.map
@@ -1,2 +1,208 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var nodemailer=require("nodemailer"),aws=require("aws-sdk"),collections_1=require("../support-methods/collections"),support_1=require("../support-methods/support"),counters_1=require("../support-methods/counters"),mongoose_1=require("mongoose"),common_1=require("../util/common"),log_collection_1=require("../collections/log.collection"),SupportManager=function(){function e(e,o){var r=this;this._supportMethods={},this._sendQueue=[],this._runningQueue=!1,this._mainServer=e,this.serverConfig=o,collections_1.loadSupportCollectionMethods(this),support_1.loadSupportMethods(this),counters_1.loadCounterMethods(this),this._mailer=nodemailer.createTransport({SES:new aws.SES({apiVersion:"2010-12-01",accessKeyId:o.AWSACCESSKEYID,secretAccessKey:o.AWSSECRETACCESSKEY,region:o.AWSSES_REGION})}),this._aws=new aws.S3({accessKeyId:o.AWSACCESSKEYID,secretAccessKey:o.AWSSECRETACCESSKEY,region:o.AWSREGION}),setInterval(function(){if(!r._runningQueue&&r._sendQueue.length){r._runningQueue=!0;for(var e=function(e){var o=r._mainServer.getWS(r._sendQueue[e].id_ws);if(o&&o.readyState===o.OPEN){if(o.bufferedAmount<20480){var t=r._sendQueue.pop();o.send(JSON.stringify(t.data),function(e){e&&(console.log("Error on WS: ",e),r._mainServer.unsubscribeWS(o))}),common_1.getBinarySize(JSON.stringify(t.methodData))<2e5&&common_1.getBinarySize(JSON.stringify(t.data))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"client-response",title:"Client Response - Support",message:"User: "+o.user+", MessageId: "+t.data.messageId+", Support Method: "+t.method,payload:[JSON.stringify(t.methodData),t.data],method:t.method,user:o.user,messageId:t.data.messageId}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"client-response",title:"Client Response - Support",message:"User: "+o.user+", MessageId: "+t.data.messageId+", Support Method: "+t.method,payload:"Too Big",method:t.method,user:o.user,messageId:t.data.messageId})}}else r._sendQueue.splice(e,1)},o=r._sendQueue.length-1;0<=o;o--)e(o);r._runningQueue=!1}},250)}return e.prototype.getMainServer=function(){return this._mainServer},e.prototype.supportMethods=function(e){this._supportMethods=Object.assign(this._supportMethods,e)},e.prototype.callSupportMethod=function(t,r,s){for(var e,n=this,i=[],o=3;o<arguments.length;o++)i[o-3]=arguments[o];var a=this;if(a._supportMethods[s]){if(1<i.length||i[0]){if(!a._supportMethods[s].check){console.error("No Check Function For Support Method "+s),a.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+a.serverConfig.CLIENT_NAME,"No Check Function For Support Method "+s);p={messageId:r,hasError:!0,data:"Internal Error"};return void this.sendWS(t,s,i,p)}if(!a._supportMethods[s].check._schema){console.error("No Check Schema For Method "+s),a.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+a.serverConfig.CLIENT_NAME,"No Check Function For Support Method "+s);p={messageId:r,hasError:!0,data:"Internal Error"};return void this.sendWS(t,s,i,p)}for(var d={},u=Object.keys(a._supportMethods[s].check._schema).filter(function(e){return!e.includes(".")}),c=0;c<i.length;c++)d[u[c]]=i[c];try{a._supportMethods[s].check.validate(d)}catch(e){if(e){console.error("Error in Support Method Check ("+s+")",e),a.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+a.serverConfig.CLIENT_NAME,"Match Error On Support Method "+s+"\n\nData Being Checked\n"+JSON.stringify(d,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2));p={messageId:r,hasError:!0,data:"Internal Error"};return void this.sendWS(t,s,i,p)}}}(e=a._supportMethods[s].function).call.apply(e,[Object.assign({},a,{id_user:t.id_user,user:t.user,id_ws:t.id_socket})].concat(i)).then(function(e){var o={messageId:r,hasError:!1,data:e};n.sendWS(t,s,i,o)},function(e){var o={messageId:r,hasError:!0,data:e};n.sendWS(t,s,i,o)})}else{console.log("No Support Method: "+s),a.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+a.serverConfig.CLIENT_NAME,"No Support Method: "+s);var p={messageId:r,hasError:!0,data:"Internal Error"};this.sendWS(t,s,i,p)}},e.prototype.sendWS=function(e,o,t,r){this._sendQueue.splice(0,0,{id_ws:e.id_socket,method:o,methodData:t,data:r})},e.prototype.sendEmail=function(e,o,t,r,s){this._mailer.sendMail({replyTo:void 0,from:this.serverConfig.MAIL_FROM,to:e,subject:o,text:t,html:r,attachments:s},function(e,o){e&&console.log(e)})},e}();exports.SupportManager=SupportManager;
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2Vycy9zdXBwb3J0Lm1hbmFnZXIudHMiXSwibmFtZXMiOlsibm9kZW1haWxlciIsInJlcXVpcmUiLCJhd3MiLCJjb2xsZWN0aW9uc18xIiwic3VwcG9ydF8xIiwiY291bnRlcnNfMSIsIm1vbmdvb3NlXzEiLCJjb21tb25fMSIsImxvZ19jb2xsZWN0aW9uXzEiLCJTdXBwb3J0TWFuYWdlciIsIm1haW5TZXJ2ZXIiLCJzZXJ2ZXJDb25maWciLCJfdGhpcyIsInRoaXMiLCJfc3VwcG9ydE1ldGhvZHMiLCJfc2VuZFF1ZXVlIiwiX3J1bm5pbmdRdWV1ZSIsIl9tYWluU2VydmVyIiwibG9hZFN1cHBvcnRDb2xsZWN0aW9uTWV0aG9kcyIsImxvYWRTdXBwb3J0TWV0aG9kcyIsImxvYWRDb3VudGVyTWV0aG9kcyIsIl9tYWlsZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJTRVMiLCJhcGlWZXJzaW9uIiwiYWNjZXNzS2V5SWQiLCJBV1NBQ0NFU1NLRVlJRCIsInNlY3JldEFjY2Vzc0tleSIsIkFXU1NFQ1JFVEFDQ0VTU0tFWSIsInJlZ2lvbiIsIkFXU1NFU19SRUdJT04iLCJfYXdzIiwiUzMiLCJBV1NSRUdJT04iLCJzZXRJbnRlcnZhbCIsImxlbmd0aCIsImkiLCJ3cyIsImdldFdTIiwiaWRfd3MiLCJyZWFkeVN0YXRlIiwiT1BFTiIsImJ1ZmZlcmVkQW1vdW50Iiwic2VuZEl0ZW0iLCJwb3AiLCJzZW5kIiwiSlNPTiIsInN0cmluZ2lmeSIsImRhdGEiLCJlcnJvciIsImNvbnNvbGUiLCJsb2ciLCJ1bnN1YnNjcmliZVdTIiwiZ2V0QmluYXJ5U2l6ZSIsIm1ldGhvZERhdGEiLCJMb2dzIiwiY3JlYXRlIiwiX2lkIiwiVHlwZXMiLCJPYmplY3RJZCIsInRvSGV4U3RyaW5nIiwiZGF0ZSIsIkRhdGUiLCJ0eXBlIiwidGl0bGUiLCJtZXNzYWdlIiwibWVzc2FnZUlkIiwibWV0aG9kIiwicGF5bG9hZCIsInVzZXIiLCJzcGxpY2UiLCJwcm90b3R5cGUiLCJnZXRNYWluU2VydmVyIiwic3VwcG9ydE1ldGhvZHMiLCJzdXBwb3J0TWV0aG9kIiwiT2JqZWN0IiwiYXNzaWduIiwiY2FsbFN1cHBvcnRNZXRob2QiLCJfaSIsImFyZ3VtZW50cyIsInRoYXQiLCJjaGVjayIsInNlbmRFbWFpbCIsInNlcnZlclJlcyIsImhhc0Vycm9yIiwic2VuZFdTIiwiX3NjaGVtYSIsInZhbE9iaiIsInJvb3RLZXlzIiwia2V5cyIsImZpbHRlciIsImEiLCJpbmNsdWRlcyIsInZhbGlkYXRlIiwiZXJyb3JzIiwiX2EiLCJmdW5jdGlvbiIsImNhbGwiLCJhcHBseSIsImlkX3VzZXIiLCJjb25jYXQiLCJ0aGVuIiwicmVzIiwiZXJyIiwic2VuZFRvIiwic3ViamVjdCIsInRleHQiLCJodG1sIiwiYXR0YWNobWVudHMiLCJzZW5kTWFpbCIsInJlcGx5VG8iLCJ1bmRlZmluZWQiLCJmcm9tIiwiTUFJTF9GUk9NIiwidG8iLCJpbmZvIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Im9FQUNBLElBQUFBLFdBQUFDLFFBQUEsY0FDQUMsSUFBQUQsUUFBQSxXQUVBRSxjQUFBRixRQUFBLGtDQUNBRyxVQUFBSCxRQUFBLDhCQUNBSSxXQUFBSixRQUFBLCtCQUVBSyxXQUFBTCxRQUFBLFlBQ0FNLFNBQUFOLFFBQUEsa0JBQ0FPLGlCQUFBUCxRQUFBLGlDQUlBUSxlQUFBLFdBV0MsU0FBQUEsRUFBWUMsRUFBWUMsR0FBeEIsSUFBQUMsRUFBQUMsS0FST0EsS0FBQUMsZ0JBQXNDLEdBS3JDRCxLQUFBRSxXQUFhLEdBQ2JGLEtBQUFHLGVBQWdCLEVBR3ZCSCxLQUFLSSxZQUFjUCxFQUVuQkcsS0FBS0YsYUFBZUEsRUFFcEJSLGNBQUFlLDZCQUE2QkwsTUFDN0JULFVBQUFlLG1CQUFtQk4sTUFDbkJSLFdBQUFlLG1CQUFtQlAsTUFFbkJBLEtBQUtRLFFBQVVyQixXQUFXc0IsZ0JBQWdCLENBQ3pDQyxJQUFLLElBQUlyQixJQUFJcUIsSUFBSSxDQUNoQkMsV0FBWSxhQUNaQyxZQUFhZCxFQUFh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QUFBQSIsImZpbGUiOiJtYW5hZ2Vycy9zdXBwb3J0Lm1hbmFnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2ZXJSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NlcnZlci1yZXNwb25zZS5tb2RlbCc7XG5pbXBvcnQgKiBhcyBub2RlbWFpbGVyIGZyb20gJ25vZGVtYWlsZXInO1xuaW1wb3J0ICogYXMgYXdzIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgU3VwcG9ydE1ldGhvZE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3N1cHBvcnQtbWV0aG9kLm1vZGVsJztcbmltcG9ydCB7IGxvYWRTdXBwb3J0Q29sbGVjdGlvbk1ldGhvZHMgfSBmcm9tICcuLi9zdXBwb3J0LW1ldGhvZHMvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgbG9hZFN1cHBvcnRNZXRob2RzIH0gZnJvbSAnLi4vc3VwcG9ydC1tZXRob2RzL3N1cHBvcnQnO1xuaW1wb3J0IHsgbG9hZENvdW50ZXJNZXRob2RzIH0gZnJvbSAnLi4vc3VwcG9ydC1tZXRob2RzL2NvdW50ZXJzJztcblxuaW1wb3J0IHsgVHlwZXMgfSBmcm9tICdtb25nb29zZSc7XG5pbXBvcnQgeyBnZXRCaW5hcnlTaXplIH0gZnJvbSAnLi4vdXRpbC9jb21tb24nO1xuaW1wb3J0IHsgTG9ncyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2xvZy5jb2xsZWN0aW9uJztcbmltcG9ydCB7IFJlc29sdmVJT01haW5TZXJ2ZXIgfSBmcm9tICcuLi9zZXJ2ZXItYXBwJztcblxuXG5leHBvcnQgY2xhc3MgU3VwcG9ydE1hbmFnZXIge1xuXG5cdHByaXZhdGUgX21haW5TZXJ2ZXI6IFJlc29sdmVJT01haW5TZXJ2ZXI7XG5cdHB1YmxpYyBfc3VwcG9ydE1ldGhvZHM6IFN1cHBvcnRNZXRob2RNb2RlbCA9IHt9O1xuXHRwcml2YXRlIF9tYWlsZXI6IG5vZGVtYWlsZXIuVHJhbnNwb3J0ZXI7XG5cdHByaXZhdGUgX2F3czogYXdzLlMzO1xuXHRwcml2YXRlIHNlcnZlckNvbmZpZztcblxuXHRwcml2YXRlIF9zZW5kUXVldWUgPSBbXTtcblx0cHJpdmF0ZSBfcnVubmluZ1F1ZXVlID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IobWFpblNlcnZlciwgc2VydmVyQ29uZmlnKSB7XG5cdFx0dGhpcy5fbWFpblNlcnZlciA9IG1haW5TZXJ2ZXI7XG5cblx0XHR0aGlzLnNlcnZlckNvbmZpZyA9IHNlcnZlckNvbmZpZztcblxuXHRcdGxvYWRTdXBwb3J0Q29sbGVjdGlvbk1ldGhvZHModGhpcyk7XG5cdFx0bG9hZFN1cHBvcnRNZXRob2RzKHRoaXMpO1xuXHRcdGxvYWRDb3VudGVyTWV0aG9kcyh0aGlzKTtcblxuXHRcdHRoaXMuX21haWxlciA9IG5vZGVtYWlsZXIuY3JlYXRlVHJhbnNwb3J0KHtcblx0XHRcdFNFUzogbmV3IGF3cy5TRVMoe1xuXHRcdFx0XHRhcGlWZXJzaW9uOiAnMjAxMC0xMi0wMScsXG5cdFx0XHRcdGFjY2Vzc0tleUlkOiBzZXJ2ZXJDb25maWcuQVdTQUNDRVNTS0VZSUQsXG5cdFx0XHRcdHNlY3JldEFjY2Vzc0tleTogc2VydmVyQ29uZmlnLkFXU1NFQ1JFVEFDQ0VTU0tFWSxcblx0XHRcdFx0cmVnaW9uOiBzZXJ2ZXJDb25maWcuQVdTU0VTX1JFR0lPTlxuXHRcdFx0fSlcblx0XHR9KTtcblxuXHRcdHRoaXMuX2F3cyA9IG5ldyBhd3MuUzMoe1xuXHRcdFx0YWNjZXNzS2V5SWQ6IHNlcnZlckNvbmZpZy5BV1NBQ0NFU1NLRVlJRCxcblx0XHRcdHNlY3JldEFjY2Vzc0tleTogc2VydmVyQ29uZmlnLkFXU1NFQ1JFVEFDQ0VTU0tFWSxcblx0XHRcdHJlZ2lvbjogc2VydmVyQ29uZmlnLkFXU1JFR0lPTlxuXHRcdH0pO1xuXG5cdFx0c2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLl9ydW5uaW5nUXVldWUpIHtcblx0XHRcdFx0aWYgKHRoaXMuX3NlbmRRdWV1ZS5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLl9ydW5uaW5nUXVldWUgPSB0cnVlO1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSB0aGlzLl9zZW5kUXVldWUubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdFx0XHRcdGxldCB3cyA9IHRoaXMuX21haW5TZXJ2ZXIuZ2V0V1ModGhpcy5fc2VuZFF1ZXVlW2ldLmlkX3dzKTtcblx0XHRcdFx0XHRcdGlmICh3cyAmJiB3cy5yZWFkeVN0YXRlID09PSB3cy5PUEVOKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh3cy5idWZmZXJlZEFtb3VudCA8IDIwNDgwKSB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHNlbmRJdGVtID0gdGhpcy5fc2VuZFF1ZXVlLnBvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdHdzLnNlbmQoSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0uZGF0YSksIChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFcnJvciBvbiBXUzogJywgZXJyb3IpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLl9tYWluU2VydmVyLnVuc3Vic2NyaWJlV1Mod3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gaWYgKHNlbmRJdGVtLm1ldGhvZCAhPT0gJ2NvdW50UXVlcnknICYmIHNlbmRJdGVtLm1ldGhvZCAhPT0gJ2NvdW50Q29sbGVjdGlvbldpdGhRdWVyeScgJiYgc2VuZEl0ZW0ubWV0aG9kICE9PSAnZmluZCcgJiYgc2VuZEl0ZW0ubWV0aG9kICE9PSAnZmluZE9uZScgJiYgc2VuZEl0ZW0ubWV0aG9kICE9PSAnZmluZFdpdGhPcHRpb25zJyAmJiBzZW5kSXRlbS5tZXRob2QgIT09ICdzZXRXU0FwcFZlcnNpb24nICYmIHNlbmRJdGVtLm1ldGhvZCAhPT0gJ3VwbG9hZEZpbGVBbmRTYXZlJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0ubWV0aG9kRGF0YSkpIDwgMjAwMDAwICYmIGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0uZGF0YSkpIDwgMjAwMDAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdjbGllbnQtcmVzcG9uc2UnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAnQ2xpZW50IFJlc3BvbnNlIC0gU3VwcG9ydCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB3c1sndXNlciddICsgJywgTWVzc2FnZUlkOiAnICsgc2VuZEl0ZW0uZGF0YS5tZXNzYWdlSWQgKyAnLCBTdXBwb3J0IE1ldGhvZDogJyArIHNlbmRJdGVtLm1ldGhvZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXlsb2FkOiBbSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0ubWV0aG9kRGF0YSksIHNlbmRJdGVtLmRhdGFdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogc2VuZEl0ZW0ubWV0aG9kLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IHdzWyd1c2VyJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiBzZW5kSXRlbS5kYXRhLm1lc3NhZ2VJZFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnY2xpZW50LXJlc3BvbnNlJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ0NsaWVudCBSZXNwb25zZSAtIFN1cHBvcnQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgd3NbJ3VzZXInXSArICcsIE1lc3NhZ2VJZDogJyArIHNlbmRJdGVtLmRhdGEubWVzc2FnZUlkICsgJywgU3VwcG9ydCBNZXRob2Q6ICcgKyBzZW5kSXRlbS5tZXRob2QsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGF5bG9hZDogJ1RvbyBCaWcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogc2VuZEl0ZW0ubWV0aG9kLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IHdzWyd1c2VyJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiBzZW5kSXRlbS5kYXRhLm1lc3NhZ2VJZFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyB9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9zZW5kUXVldWUuc3BsaWNlKGksIDEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMuX3J1bm5pbmdRdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSwgMjUwKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRNYWluU2VydmVyKCkge1xuXHRcdHJldHVybiB0aGlzLl9tYWluU2VydmVyO1xuXHR9XG5cblx0Ly8gQWRkIG1ldGhvZHMgdG8gcHJpdmF0ZSBtZXRob2RzIG9iamVjdFxuXHRwdWJsaWMgc3VwcG9ydE1ldGhvZHMoc3VwcG9ydE1ldGhvZDogU3VwcG9ydE1ldGhvZE1vZGVsKSB7XG5cdFx0dGhpcy5fc3VwcG9ydE1ldGhvZHMgPSBPYmplY3QuYXNzaWduKHRoaXMuX3N1cHBvcnRNZXRob2RzLCBzdXBwb3J0TWV0aG9kKTtcblx0fVxuXG5cdC8vIENhbGwvcnVuIG1ldGhvZCAoRW1pdCBvbiBTb2NrZXQpXG5cdHB1YmxpYyBjYWxsU3VwcG9ydE1ldGhvZCh3czogV2ViU29ja2V0LCBtZXNzYWdlSWQsIHN1cHBvcnRNZXRob2QsIC4uLm1ldGhvZERhdGE6IGFueVtdKSB7XG5cdFx0bGV0IHRoYXQgPSB0aGlzO1xuXG5cdFx0aWYgKCF0aGF0Ll9zdXBwb3J0TWV0aG9kc1tzdXBwb3J0TWV0aG9kXSkge1xuXHRcdFx0Y29uc29sZS5sb2coJ05vIFN1cHBvcnQgTWV0aG9kOiAnICsgc3VwcG9ydE1ldGhvZCk7XG5cblx0XHRcdHRoYXQuc2VuZEVtYWlsKCdkZXZAcmVzb2x2ZWlvLmNvbScsICdTRVJWRVIgLSBFcnJvciBEZXRlY3RlZCAtICcgKyB0aGF0LnNlcnZlckNvbmZpZ1snQ0xJRU5UX05BTUUnXSwgJ05vIFN1cHBvcnQgTWV0aG9kOiAnICsgc3VwcG9ydE1ldGhvZCk7XG5cdFx0XHRcblx0XHRcdGxldCBzZXJ2ZXJSZXM6IFNlcnZlclJlc3BvbnNlTW9kZWwgPSB7XG5cdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRoYXNFcnJvcjogdHJ1ZSxcblx0XHRcdFx0ZGF0YTogJ0ludGVybmFsIEVycm9yJ1xuXHRcdFx0fTtcblxuXHRcdFx0dGhpcy5zZW5kV1Mod3MsIHN1cHBvcnRNZXRob2QsIG1ldGhvZERhdGEsIHNlcnZlclJlcyk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoKG1ldGhvZERhdGEubGVuZ3RoID4gMSB8fCBtZXRob2REYXRhWzBdKSkge1xuXHRcdFx0aWYgKCF0aGF0Ll9zdXBwb3J0TWV0aG9kc1tzdXBwb3J0TWV0aG9kXS5jaGVjaykge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdObyBDaGVjayBGdW5jdGlvbiBGb3IgU3VwcG9ydCBNZXRob2QgJyArIHN1cHBvcnRNZXRob2QpO1xuXG5cdFx0XHRcdHRoYXQuc2VuZEVtYWlsKCdkZXZAcmVzb2x2ZWlvLmNvbScsICdTRVJWRVIgLSBFcnJvciBEZXRlY3RlZCAtICcgKyB0aGF0LnNlcnZlckNvbmZpZ1snQ0xJRU5UX05BTUUnXSwgJ05vIENoZWNrIEZ1bmN0aW9uIEZvciBTdXBwb3J0IE1ldGhvZCAnICsgc3VwcG9ydE1ldGhvZCk7XG5cdFx0XHRcdFxuXHRcdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRcdGhhc0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRcdGRhdGE6ICdJbnRlcm5hbCBFcnJvcidcblx0XHRcdFx0fTtcblx0XG5cdFx0XHRcdHRoaXMuc2VuZFdTKHdzLCBzdXBwb3J0TWV0aG9kLCBtZXRob2REYXRhLCBzZXJ2ZXJSZXMpO1xuXHRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAoIXRoYXQuX3N1cHBvcnRNZXRob2RzW3N1cHBvcnRNZXRob2RdLmNoZWNrLl9zY2hlbWEpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcignTm8gQ2hlY2sgU2NoZW1hIEZvciBNZXRob2QgJyArIHN1cHBvcnRNZXRob2QpO1xuXG5cdFx0XHRcdHRoYXQuc2VuZEVtYWlsKCdkZXZAcmVzb2x2ZWlvLmNvbScsICdTRVJWRVIgLSBFcnJvciBEZXRlY3RlZCAtICcgKyB0aGF0LnNlcnZlckNvbmZpZ1snQ0xJRU5UX05BTUUnXSwgJ05vIENoZWNrIEZ1bmN0aW9uIEZvciBTdXBwb3J0IE1ldGhvZCAnICsgc3VwcG9ydE1ldGhvZCk7XG5cdFx0XHRcdFxuXHRcdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRcdGhhc0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRcdGRhdGE6ICdJbnRlcm5hbCBFcnJvcidcblx0XHRcdFx0fTtcblx0XG5cdFx0XHRcdHRoaXMuc2VuZFdTKHdzLCBzdXBwb3J0TWV0aG9kLCBtZXRob2REYXRhLCBzZXJ2ZXJSZXMpO1xuXHRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGxldCB2YWxPYmogPSB7fTtcblx0XHRcdFx0bGV0IHZhbEtleXMgPSBPYmplY3Qua2V5cyh0aGF0Ll9zdXBwb3J0TWV0aG9kc1tzdXBwb3J0TWV0aG9kXS5jaGVjay5fc2NoZW1hKTtcblxuXHRcdFx0XHRsZXQgcm9vdEtleXMgPSB2YWxLZXlzLmZpbHRlcihhID0+ICFhLmluY2x1ZGVzKCcuJykpO1xuXHRcdFx0XHRcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBtZXRob2REYXRhLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFsT2JqW3Jvb3RLZXlzW2ldXSA9IG1ldGhvZERhdGFbaV07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHRoYXQuX3N1cHBvcnRNZXRob2RzW3N1cHBvcnRNZXRob2RdLmNoZWNrLnZhbGlkYXRlKHZhbE9iaik7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2F0Y2ggKGVycm9ycykge1xuXHRcdFx0XHRcdGlmIChlcnJvcnMpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIFN1cHBvcnQgTWV0aG9kIENoZWNrICgnICsgc3VwcG9ydE1ldGhvZCArICcpJywgZXJyb3JzKTtcblxuXHRcdFx0XHRcdFx0dGhhdC5zZW5kRW1haWwoJ2RldkByZXNvbHZlaW8uY29tJywgJ1NFUlZFUiAtIEVycm9yIERldGVjdGVkIC0gJyArIHRoYXQuc2VydmVyQ29uZmlnWydDTElFTlRfTkFNRSddLCAnTWF0Y2ggRXJyb3IgT24gU3VwcG9ydCBNZXRob2QgJyArIHN1cHBvcnRNZXRob2QgKyAnXFxuXFxuRGF0YSBCZWluZyBDaGVja2VkXFxuJyArIEpTT04uc3RyaW5naWZ5KHZhbE9iaiwgbnVsbCwgMikgKyAnXFxuXFxuRXJyb3JzXFxuJyArIEpTT04uc3RyaW5naWZ5KGVycm9ycywgbnVsbCwgMikpO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdFx0XHRcdFx0aGFzRXJyb3I6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGRhdGE6ICdJbnRlcm5hbCBFcnJvcidcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHRoaXMuc2VuZFdTKHdzLCBzdXBwb3J0TWV0aG9kLCBtZXRob2REYXRhLCBzZXJ2ZXJSZXMpO1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHRcdHRoYXQuX3N1cHBvcnRNZXRob2RzW3N1cHBvcnRNZXRob2RdLmZ1bmN0aW9uLmNhbGwoT2JqZWN0LmFzc2lnbih7fSwgdGhhdCwge2lkX3VzZXI6IHdzWydpZF91c2VyJ10sIHVzZXI6IHdzWyd1c2VyJ10sIGlkX3dzOiB3c1snaWRfc29ja2V0J119KSwgLi4ubWV0aG9kRGF0YSkudGhlbihyZXMgPT4ge1xuXHRcdFx0bGV0IHNlcnZlclJlczogU2VydmVyUmVzcG9uc2VNb2RlbCA9IHtcblx0XHRcdFx0bWVzc2FnZUlkOiBtZXNzYWdlSWQsXG5cdFx0XHRcdGhhc0Vycm9yOiBmYWxzZSxcblx0XHRcdFx0ZGF0YTogcmVzXG5cdFx0XHR9O1xuXG5cdFx0XHR0aGlzLnNlbmRXUyh3cywgc3VwcG9ydE1ldGhvZCwgbWV0aG9kRGF0YSwgc2VydmVyUmVzKTtcblx0XHR9LCBlcnIgPT4ge1xuXHRcdFx0bGV0IHNlcnZlclJlczogU2VydmVyUmVzcG9uc2VNb2RlbCA9IHtcblx0XHRcdFx0bWVzc2FnZUlkOiBtZXNzYWdlSWQsXG5cdFx0XHRcdGhhc0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRkYXRhOiBlcnJcblx0XHRcdH07XG5cblx0XHRcdHRoaXMuc2VuZFdTKHdzLCBzdXBwb3J0TWV0aG9kLCBtZXRob2REYXRhLCBzZXJ2ZXJSZXMpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZW5kV1Mod3M6IFdlYlNvY2tldCwgbWV0aG9kOiBzdHJpbmcsIG1ldGhvZERhdGE6IGFueVtdLCBkYXRhOiBTZXJ2ZXJSZXNwb25zZU1vZGVsKSB7XG5cdFx0dGhpcy5fc2VuZFF1ZXVlLnNwbGljZSgwLCAwLCB7XG5cdFx0XHRpZF93czogd3NbJ2lkX3NvY2tldCddLFxuXHRcdFx0bWV0aG9kOiBtZXRob2QsXG5cdFx0XHRtZXRob2REYXRhOiBtZXRob2REYXRhLFxuXHRcdFx0ZGF0YTogZGF0YVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIHNlbmRFbWFpbChzZW5kVG86IHN0cmluZywgc3ViamVjdDogc3RyaW5nLCB0ZXh0Pzogc3RyaW5nLCBodG1sPzogc3RyaW5nLCBhdHRhY2htZW50cz86IGFueVtdKSB7XG5cdFx0dGhpcy5fbWFpbGVyLnNlbmRNYWlsKHtcblx0XHRcdHJlcGx5VG86IHVuZGVmaW5lZCxcblx0XHRcdGZyb206IHRoaXMuc2VydmVyQ29uZmlnLk1BSUxfRlJPTSxcblx0XHRcdHRvOiBzZW5kVG8sXG5cdFx0XHRzdWJqZWN0OiBzdWJqZWN0LFxuXHRcdFx0dGV4dDogdGV4dCxcblx0XHRcdGh0bWw6IGh0bWwsXG5cdFx0XHRhdHRhY2htZW50czogYXR0YWNobWVudHNcblx0XHR9LCAoZXJyLCBpbmZvKSA9PiB7XG5cdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn0iXX0=
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var nodemailer = require("nodemailer");
4
+ var aws = require("aws-sdk");
5
+ var collections_1 = require("../support-methods/collections");
6
+ var support_1 = require("../support-methods/support");
7
+ var counters_1 = require("../support-methods/counters");
8
+ var mongoose_1 = require("mongoose");
9
+ var common_1 = require("../util/common");
10
+ var log_collection_1 = require("../collections/log.collection");
11
+ var SupportManager = /** @class */ (function () {
12
+ function SupportManager(mainServer, serverConfig) {
13
+ var _this = this;
14
+ this._supportMethods = {};
15
+ this._sendQueue = [];
16
+ this._runningQueue = false;
17
+ this._mainServer = mainServer;
18
+ this.serverConfig = serverConfig;
19
+ collections_1.loadSupportCollectionMethods(this);
20
+ support_1.loadSupportMethods(this);
21
+ counters_1.loadCounterMethods(this);
22
+ this._mailer = nodemailer.createTransport({
23
+ SES: new aws.SES({
24
+ apiVersion: '2010-12-01',
25
+ accessKeyId: serverConfig.AWSACCESSKEYID,
26
+ secretAccessKey: serverConfig.AWSSECRETACCESSKEY,
27
+ region: serverConfig.AWSSES_REGION
28
+ })
29
+ });
30
+ this._aws = new aws.S3({
31
+ accessKeyId: serverConfig.AWSACCESSKEYID,
32
+ secretAccessKey: serverConfig.AWSSECRETACCESSKEY,
33
+ region: serverConfig.AWSREGION
34
+ });
35
+ setInterval(function () {
36
+ if (!_this._runningQueue) {
37
+ if (_this._sendQueue.length) {
38
+ _this._runningQueue = true;
39
+ var _loop_1 = function (i) {
40
+ var ws = _this._mainServer.getWS(_this._sendQueue[i].id_ws);
41
+ if (ws && ws.readyState === ws.OPEN) {
42
+ if (ws.bufferedAmount < 20480) {
43
+ var sendItem = _this._sendQueue.pop();
44
+ ws.send(JSON.stringify(sendItem.data), function (error) {
45
+ if (error) {
46
+ console.log('Error on WS: ', error);
47
+ _this._mainServer.unsubscribeWS(ws);
48
+ }
49
+ });
50
+ // if (sendItem.method !== 'countQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'setWSAppVersion' && sendItem.method !== 'uploadFileAndSave') {
51
+ if (common_1.getBinarySize(JSON.stringify(sendItem.methodData)) < 200000 && common_1.getBinarySize(JSON.stringify(sendItem.data)) < 200000) {
52
+ log_collection_1.Logs.create({
53
+ _id: mongoose_1.Types.ObjectId().toHexString(),
54
+ date: new Date(),
55
+ type: 'client-response',
56
+ title: 'Client Response - Support',
57
+ message: 'User: ' + ws['user'] + ', MessageId: ' + sendItem.data.messageId + ', Support Method: ' + sendItem.method,
58
+ payload: [JSON.stringify(sendItem.methodData), sendItem.data],
59
+ method: sendItem.method,
60
+ user: ws['user'],
61
+ messageId: sendItem.data.messageId
62
+ });
63
+ }
64
+ else {
65
+ log_collection_1.Logs.create({
66
+ _id: mongoose_1.Types.ObjectId().toHexString(),
67
+ date: new Date(),
68
+ type: 'client-response',
69
+ title: 'Client Response - Support',
70
+ message: 'User: ' + ws['user'] + ', MessageId: ' + sendItem.data.messageId + ', Support Method: ' + sendItem.method,
71
+ payload: 'Too Big',
72
+ method: sendItem.method,
73
+ user: ws['user'],
74
+ messageId: sendItem.data.messageId
75
+ });
76
+ }
77
+ // }
78
+ }
79
+ }
80
+ else {
81
+ _this._sendQueue.splice(i, 1);
82
+ }
83
+ };
84
+ for (var i = _this._sendQueue.length - 1; i >= 0; i--) {
85
+ _loop_1(i);
86
+ }
87
+ _this._runningQueue = false;
88
+ }
89
+ }
90
+ }, 250);
91
+ }
92
+ SupportManager.prototype.getMainServer = function () {
93
+ return this._mainServer;
94
+ };
95
+ // Add methods to private methods object
96
+ SupportManager.prototype.supportMethods = function (supportMethod) {
97
+ this._supportMethods = Object.assign(this._supportMethods, supportMethod);
98
+ };
99
+ // Call/run method (Emit on Socket)
100
+ SupportManager.prototype.callSupportMethod = function (ws, messageId, supportMethod) {
101
+ var _this = this;
102
+ var methodData = [];
103
+ for (var _i = 3; _i < arguments.length; _i++) {
104
+ methodData[_i - 3] = arguments[_i];
105
+ }
106
+ var _a;
107
+ var that = this;
108
+ if (!that._supportMethods[supportMethod]) {
109
+ console.log('No Support Method: ' + supportMethod);
110
+ that.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Support Method: ' + supportMethod);
111
+ var serverRes = {
112
+ messageId: messageId,
113
+ hasError: true,
114
+ data: 'Internal Error'
115
+ };
116
+ this.sendWS(ws, supportMethod, methodData, serverRes);
117
+ return;
118
+ }
119
+ if ((methodData.length > 1 || methodData[0])) {
120
+ if (!that._supportMethods[supportMethod].check) {
121
+ console.error('No Check Function For Support Method ' + supportMethod);
122
+ that.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Support Method ' + supportMethod);
123
+ var serverRes = {
124
+ messageId: messageId,
125
+ hasError: true,
126
+ data: 'Internal Error'
127
+ };
128
+ this.sendWS(ws, supportMethod, methodData, serverRes);
129
+ return;
130
+ }
131
+ else if (!that._supportMethods[supportMethod].check._schema) {
132
+ console.error('No Check Schema For Method ' + supportMethod);
133
+ that.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Support Method ' + supportMethod);
134
+ var serverRes = {
135
+ messageId: messageId,
136
+ hasError: true,
137
+ data: 'Internal Error'
138
+ };
139
+ this.sendWS(ws, supportMethod, methodData, serverRes);
140
+ return;
141
+ }
142
+ else {
143
+ var valObj = {};
144
+ var valKeys = Object.keys(that._supportMethods[supportMethod].check._schema);
145
+ var rootKeys = valKeys.filter(function (a) { return !a.includes('.'); });
146
+ for (var i = 0; i < methodData.length; i++) {
147
+ valObj[rootKeys[i]] = methodData[i];
148
+ }
149
+ try {
150
+ that._supportMethods[supportMethod].check.validate(valObj);
151
+ }
152
+ catch (errors) {
153
+ if (errors) {
154
+ console.error('Error in Support Method Check (' + supportMethod + ')', errors);
155
+ that.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'Match Error On Support Method ' + supportMethod + '\n\nData Being Checked\n' + JSON.stringify(valObj, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
156
+ var serverRes = {
157
+ messageId: messageId,
158
+ hasError: true,
159
+ data: 'Internal Error'
160
+ };
161
+ this.sendWS(ws, supportMethod, methodData, serverRes);
162
+ return;
163
+ }
164
+ }
165
+ }
166
+ }
167
+ (_a = that._supportMethods[supportMethod].function).call.apply(_a, [Object.assign({}, that, { id_user: ws['id_user'], user: ws['user'], id_ws: ws['id_socket'] })].concat(methodData)).then(function (res) {
168
+ var serverRes = {
169
+ messageId: messageId,
170
+ hasError: false,
171
+ data: res
172
+ };
173
+ _this.sendWS(ws, supportMethod, methodData, serverRes);
174
+ }, function (err) {
175
+ var serverRes = {
176
+ messageId: messageId,
177
+ hasError: true,
178
+ data: err
179
+ };
180
+ _this.sendWS(ws, supportMethod, methodData, serverRes);
181
+ });
182
+ };
183
+ SupportManager.prototype.sendWS = function (ws, method, methodData, data) {
184
+ this._sendQueue.splice(0, 0, {
185
+ id_ws: ws['id_socket'],
186
+ method: method,
187
+ methodData: methodData,
188
+ data: data
189
+ });
190
+ };
191
+ SupportManager.prototype.sendEmail = function (sendTo, subject, text, html, attachments) {
192
+ this._mailer.sendMail({
193
+ replyTo: undefined,
194
+ from: this.serverConfig.MAIL_FROM,
195
+ to: sendTo,
196
+ subject: subject,
197
+ text: text,
198
+ html: html,
199
+ attachments: attachments
200
+ }, function (err, info) {
201
+ if (err) {
202
+ console.log(err);
203
+ }
204
+ });
205
+ };
206
+ return SupportManager;
207
+ }());
208
+ exports.SupportManager = SupportManager;
@@ -0,0 +1,3 @@
1
+ import { MethodManager } from '../managers/method.manager';
2
+ export declare function loadAccountMethods(methodManager: MethodManager): void;
3
+ //# sourceMappingURL=accounts.d.ts.map
@@ -1,2 +1,253 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(s,i,u,a){return new(u||(u=Promise))(function(e,n){function r(e){try{o(a.next(e))}catch(e){n(e)}}function t(e){try{o(a.throw(e))}catch(e){n(e)}}function o(n){n.done?e(n.value):new u(function(e){e(n.value)}).then(r,t)}o((a=a.apply(s,i||[])).next())})},__generator=this&&this.__generator||function(r,t){var o,s,i,e,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return e={next:n(0),throw:n(1),return:n(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function n(n){return function(e){return function(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,s&&(i=2&n[0]?s.return:n[0]?s.throw||((i=s.return)&&i.call(s),0):s.next)&&!(i=i.call(s,n[1])).done)return i;switch(s=0,i&&(n=[2&n[0],i.value]),n[0]){case 0:case 1:i=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,s=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(!(i=0<(i=u.trys).length&&i[i.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!i||n[1]>i[0]&&n[1]<i[3])){u.label=n[1];break}if(6===n[0]&&u.label<i[1]){u.label=i[1],i=n;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(n);break}i[2]&&u.ops.pop(),u.trys.pop();continue}n=t.call(r,u)}catch(e){n=[6,e],s=0}finally{o=i=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}([n,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var simpl_schema_1=require("simpl-schema"),mongoose_1=require("mongoose"),user_collection_1=require("../collections/user.collection"),handlebars=require("handlebars"),jwt=require("jsonwebtoken"),logged_in_users_collection_1=require("../collections/logged-in-users.collection"),queue_response_collection_1=require("../collections/queue-response.collection"),index_1=require("../index");function loadAccountMethods(e){e.methods({setWSAppVersion:{skipQueue:!0,check:new simpl_schema_1.default({version:Number}),function:function(e){return logged_in_users_collection_1.LoggedInUsers.updateOne({id_ws:this.id_ws},{$set:{app_version:e}}).exec()}},reloadWS:{skipQueue:!0,check:new simpl_schema_1.default({id_ws:String}),function:function(r){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){return queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,method:"reloadWSCommand",method_data:[],id_ws:r,messageId:0,id_user:this.id_user,user:this.user,response:{messageId:0,hasError:!1,data:"reloadWSCommand"}}).then(function(e){}),n(),[2]})})})}},reconnectWS:{skipQueue:!0,check:new simpl_schema_1.default({id_ws:String}),function:function(r){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){return queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,method:"reconnectWSCommand",method_data:[],id_ws:r,messageId:0,id_user:this.id_user,user:this.user,response:{messageId:0,hasError:!1,data:"reconnectWSCommand"}}),n(),[2]})})})}},disconnectWS:{skipQueue:!0,check:new simpl_schema_1.default({id_ws:String}),function:function(r){var t=this;return new Promise(function(n,e){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){return queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,method:"disconnectWSCommand",method_data:[],id_ws:r,messageId:0,id_user:this.id_user,user:this.user,response:{messageId:0,hasError:!1,data:"disconnectWSCommand"}}),n(),[2]})})})}},createUserAndEmailEnrollment:{check:new simpl_schema_1.default({data:{type:user_collection_1.Users.simplschema}}),function:function(r){var e=this;return new Promise(function(s,i){return __awaiter(e,void 0,void 0,function(){var n,t,o=this;return __generator(this,function(e){switch(e.label){case 0:return n=mongoose_1.Types.ObjectId().toHexString(),[4,user_collection_1.Users.create({_id:n,__v:0,username:r.username,email:r.email,fullname:r.fullname,roles:[],active:!0,readonly:!1,services:{enrollment:jwt.sign({id_user:n},this.serverConfig.JWT_SECRET,{expiresIn:2592e5})},phonenumber:r.phonenumber})];case 1:return(t=e.sent()).setPassword(randomString(20,"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"),function(e,n){t.save();var r={fullname:t.fullname,user:o.user,url:o.serverConfig.ROOT_URL+"/enroll-account?"+encodeURIComponent(o.serverConfig.SERVER_URL)+"&"+t.services.enrollment};o.readFile("email-templates/enrollment.html").then(function(e){var n=handlebars.compile(e);handlebars.registerHelper("equals",function(e,n){return e===n}),o.sendEmail(t.email,"ResolveIO ("+index_1.default.getClientName()+") - Enrollment Email","",n(r)),s(!0)},function(e){return i(e)})}),[2]}})})})}},resetUserPassword:{check:new simpl_schema_1.default({userId:{type:String}}),function:function(n){var e=this;return new Promise(function(s,i){return __awaiter(e,void 0,void 0,function(){var r,t,o=this;return __generator(this,function(e){switch(e.label){case 0:return[4,user_collection_1.Users.findOne({_id:n})];case 1:return(r=e.sent())&&(r.services.forgot_password=jwt.sign({id_user:n},this.serverConfig.JWT_SECRET),t={userToChangePassword:r.fullname,userWhoResetPassword:this.user,url:this.serverConfig.ROOT_URL+"/forgot-password?"+encodeURIComponent(this.serverConfig.SERVER_URL)+"&"+r.services.forgot_password},user_collection_1.Users.updateOne({_id:r._id},{$set:{services:r.services}}).exec(function(e,n){o.readFile("email-templates/forgot-password.html").then(function(e){var n=handlebars.compile(e);handlebars.registerHelper("equals",function(e,n){return e===n}),o.sendEmail(r.email,"ResolveIO ("+index_1.default.getClientName()+") - Forgot Password","",n(t)),s(!0)},function(e){return i(e)})})),[2]}})})})}}})}function randomString(e,n){for(var r="",t=e;0<t;--t)r+=n[Math.floor(Math.random()*n.length)];return r}exports.loadAccountMethods=loadAccountMethods;
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRob2RzL2FjY291bnRzLnRzIl0sIm5hbWVzIjpbInNpbXBsX3NjaGVtYV8xIiwicmVxdWlyZSIsIm1vbmdvb3NlXzEiLCJ1c2VyX2NvbGxlY3Rpb25fMSIsImhhbmRsZWJhcnMiLCJqd3QiLCJsb2dnZWRfaW5fdXNlcnNfY29sbGVjdGlvbl8xIiwicXVldWVfcmVzcG9uc2VfY29sbGVjdGlvbl8xIiwiaW5kZXhfMSIsImxvYWRBY2NvdW50TWV0aG9kcyIsIm1ldGhvZE1hbmFnZXIiLCJtZXRob2RzIiwic2V0V1NBcHBWZXJzaW9uIiwic2tpcFF1ZXVlIiwiY2hlY2siLCJkZWZhdWx0IiwidmVyc2lvbiIsIk51bWJlciIsImZ1bmN0aW9uIiwiTG9nZ2VkSW5Vc2VycyIsInVwZGF0ZU9uZSIsImlkX3dzIiwidGhpcyIsIiRzZXQiLCJhcHBfdmVyc2lvbiIsImV4ZWMiLCJyZWxvYWRXUyIsIlN0cmluZyIsIl90aGlzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJfX2F3YWl0ZXIiLCJRdWV1ZVJlc3BvbnNlcyIsImNyZWF0ZSIsIl9pZCIsIlR5cGVzIiwiT2JqZWN0SWQiLCJ0b0hleFN0cmluZyIsIl9fdiIsIm1ldGhvZCIsIm1ldGhvZF9kYXRhIiwibWVzc2FnZUlkIiwiaWRfdXNlciIsInVzZXIiLCJyZXNwb25zZSIsImhhc0Vycm9yIiwiZGF0YSIsInRoZW4iLCJ2YWwiLCJyZWNvbm5lY3RXUyIsImRpc2Nvbm5lY3RXUyIsImNyZWF0ZVVzZXJBbmRFbWFpbEVucm9sbG1lbnQiLCJ0eXBlIiwiVXNlcnMiLCJ1c2VySWQiLCJ1c2VybmFtZSIsImVtYWlsIiwiZnVsbG5hbWUiLCJyb2xlcyIsImFjdGl2ZSIsInJlYWRvbmx5Iiwic2VydmljZXMiLCJlbnJvbGxtZW50Iiwic2lnbiIsInNlcnZlckNvbmZpZyIsImV4cGlyZXNJbiIsInBob25lbnVtYmVyIiwiX2EiLCJzZW50Iiwic2V0UGFzc3dvcmQiLCJyYW5kb21TdHJpbmciLCJlcnIiLCJyZXMiLCJzYXZlIiwiZW1haWxEYXRhIiwidXJsIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVhZEZpbGUiLCJodG1sIiwidGVtcGxhdGUiLCJjb21waWxlIiwicmVnaXN0ZXJIZWxwZXIiLCJhIiwiYiIsInNlbmRFbWFpbCIsImdldENsaWVudE5hbWUiLCJlcnJFbWFpbCIsInJlc2V0VXNlclBhc3N3b3JkIiwiZmluZE9uZSIsImZvcmdvdF9wYXNzd29yZCIsImVtYWlsRGF0YV8xIiwidXNlclRvQ2hhbmdlUGFzc3dvcmQiLCJ1c2VyV2hvUmVzZXRQYXNzd29yZCIsImxlbmd0aCIsImNoYXJzIiwicmVzdWx0IiwiaSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJvN0NBQUEsSUFBQUEsZUFBQUMsUUFBQSxnQkFDQUMsV0FBQUQsUUFBQSxZQUNBRSxrQkFBQUYsUUFBQSxrQ0FDQUcsV0FBQUgsUUFBQSxjQUNBSSxJQUFBSixRQUFBLGdCQUNBSyw2QkFBQUwsUUFBQSw2Q0FDQU0sNEJBQUFOLFFBQUEsNENBRUFPLFFBQUFQLFFBQUEsWUFFQSxTQUFnQlEsbUJBQW1CQyxHQUNsQ0EsRUFBY0MsUUFBUSxDQUNyQkMsZ0JBQWlCLENBQ2hCQyxXQUFXLEVBQ1hDLE1BQU8sSUFBSWQsZUFBQWUsUUFBYSxDQUN2QkMsUUFBU0MsU0FFVkMsU0FBVSxTQUFTRixHQUNsQixPQUFPViw2QkFBQWEsY0FBY0MsVUFBVSxDQUFDQyxNQUFPQyxLQUFLRCxPQUFRLENBQUNFLEtBQU0sQ0FBQ0MsWUFBYVIsS0FBV1MsU0FHdEZDLFNBQVUsQ0FDVGIsV0FBVyxFQUNYQyxNQUFPLElBQUlkLGVBQUFlLFFBQWEsQ0FDdkJNLE1BQU9NLFNBRVJULFNBQVUsU0FBU0csR0FBVCxJQUFBTyxFQUFBTixLQUNULE9BQU8sSUFBSU8sUUFBUSxTQUFPQyxFQUFTQyxHQUFNLE9BQUFDLFVBQUFKLE9BQUEsT0FBQSxFQUFBLHNEQUN4Q3JCLDRCQUFBMEIsZUFBZUMsT0FBTyxDQUNyQkMs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QUVqSDdELEdBQVEsSUFDTixTQUFBeUQsR0FBWSxPQUFBeEQsRUFBT3dELHVCQVM3QixTQUFTaEIsYUFBYXVCLEVBQVFDLEdBRTdCLElBREEsSUFBSUMsRUFBUyxHQUNKQyxFQUFJSCxFQUFZLEVBQUpHLElBQVNBLEVBQUtELEdBQVVELEVBQU1HLEtBQUtDLE1BQU1ELEtBQUtFLFNBQVdMLEVBQU1ELFNBQ3BGLE9BQU9FLEVBMUxSSyxRQUFBNUYsbUJBQUFBIiwiZmlsZSI6Im1ldGhvZHMvYWNjb3VudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2ltcGxlU2NoZW1hIGZyb20gJ3NpbXBsLXNjaGVtYSc7XG5pbXBvcnQgeyBUeXBlcyB9IGZyb20gJ21vbmdvb3NlJztcbmltcG9ydCB7IFVzZXJzIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvdXNlci5jb2xsZWN0aW9uJztcbmltcG9ydCAqIGFzIGhhbmRsZWJhcnMgZnJvbSAnaGFuZGxlYmFycyc7XG5pbXBvcnQgKiBhcyBqd3QgZnJvbSAnanNvbndlYnRva2VuJztcbmltcG9ydCB7IExvZ2dlZEluVXNlcnMgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9sb2dnZWQtaW4tdXNlcnMuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBRdWV1ZVJlc3BvbnNlcyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL3F1ZXVlLXJlc3BvbnNlLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgTWV0aG9kTWFuYWdlciB9IGZyb20gJy4uL21hbmFnZXJzL21ldGhvZC5tYW5hZ2VyJztcbmltcG9ydCBSZXNvbHZlSU9TZXJ2ZXIgZnJvbSAnLi4vaW5kZXgnO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFjY291bnRNZXRob2RzKG1ldGhvZE1hbmFnZXI6IE1ldGhvZE1hbmFnZXIpIHtcblx0bWV0aG9kTWFuYWdlci5tZXRob2RzKHtcblx0XHRzZXRXU0FwcFZlcnNpb246IHtcblx0XHRcdHNraXBRdWV1ZTogdHJ1ZSxcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0dmVyc2lvbjogTnVtYmVyXG5cdFx0XHR9KSxcblx0XHRcdGZ1bmN0aW9uOiBmdW5jdGlvbih2ZXJzaW9uKSB7XG5cdFx0XHRcdHJldHVybiBMb2dnZWRJblVzZXJzLnVwZGF0ZU9uZSh7aWRfd3M6IHRoaXMuaWRfd3N9LCB7JHNldDoge2FwcF92ZXJzaW9uOiB2ZXJzaW9ufX0pLmV4ZWMoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlbG9hZFdTOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGlkX3dzOiBTdHJpbmdcblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGlkX3dzKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0UXVldWVSZXNwb25zZXMuY3JlYXRlKHtcblx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0X192OiAwLFxuXHRcdFx0XHRcdFx0bWV0aG9kOiAncmVsb2FkV1NDb21tYW5kJyxcblx0XHRcdFx0XHRcdG1ldGhvZF9kYXRhOiBbXSxcblx0XHRcdFx0XHRcdGlkX3dzOiBpZF93cyxcblx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogMCxcblx0XHRcdFx0XHRcdGlkX3VzZXI6IHRoaXMuaWRfdXNlcixcblx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdHJlc3BvbnNlOiB7XG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogMCxcblx0XHRcdFx0XHRcdFx0aGFzRXJyb3I6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRkYXRhOiAncmVsb2FkV1NDb21tYW5kJ1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLnRoZW4odmFsID0+IHtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbCk7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0cmVjb25uZWN0V1M6IHtcblx0XHRcdHNraXBRdWV1ZTogdHJ1ZSxcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0aWRfd3M6IFN0cmluZ1xuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oaWRfd3MpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0XHRRdWV1ZVJlc3BvbnNlcy5jcmVhdGUoe1xuXHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRfX3Y6IDAsXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdyZWNvbm5lY3RXU0NvbW1hbmQnLFxuXHRcdFx0XHRcdFx0bWV0aG9kX2RhdGE6IFtdLFxuXHRcdFx0XHRcdFx0aWRfd3M6IGlkX3dzLFxuXHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAwLFxuXHRcdFx0XHRcdFx0aWRfdXNlcjogdGhpcy5pZF91c2VyLFxuXHRcdFx0XHRcdFx0dXNlcjogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0cmVzcG9uc2U6IHtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAwLFxuXHRcdFx0XHRcdFx0XHRoYXNFcnJvcjogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGRhdGE6ICdyZWNvbm5lY3RXU0NvbW1hbmQnXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZGlzY29ubmVjdFdTOiB7XG5cdFx0XHRza2lwUXVldWU6IHRydWUsXG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGlkX3dzOiBTdHJpbmdcblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGlkX3dzKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0UXVldWVSZXNwb25zZXMuY3JlYXRlKHtcblx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0X192OiAwLFxuXHRcdFx0XHRcdFx0bWV0aG9kOiAnZGlzY29ubmVjdFdTQ29tbWFuZCcsXG5cdFx0XHRcdFx0XHRtZXRob2RfZGF0YTogW10sXG5cdFx0XHRcdFx0XHRpZF93czogaWRfd3MsXG5cdFx0XHRcdFx0XHRtZXNzYWdlSWQ6IDAsXG5cdFx0XHRcdFx0XHRpZF91c2VyOiB0aGlzLmlkX3VzZXIsXG5cdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRyZXNwb25zZToge1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6IDAsXG5cdFx0XHRcdFx0XHRcdGhhc0Vycm9yOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0ZGF0YTogJ2Rpc2Nvbm5lY3RXU0NvbW1hbmQnXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Y3JlYXRlVXNlckFuZEVtYWlsRW5yb2xsbWVudDoge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRkYXRhOiB7XG5cdFx0XHRcdFx0dHlwZTogVXNlcnNbJ3NpbXBsc2NoZW1hJ11cblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oZGF0YSkge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdGxldCB1c2VySWQgPSBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCk7XG5cblx0XHRcdFx0XHRsZXQgdXNlciA9IGF3YWl0IFVzZXJzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRfaWQ6IHVzZXJJZCxcblx0XHRcdFx0XHRcdF9fdjogMCxcblx0XHRcdFx0XHRcdHVzZXJuYW1lOiBkYXRhLnVzZXJuYW1lLCBcblx0XHRcdFx0XHRcdGVtYWlsOiBkYXRhLmVtYWlsLFxuXHRcdFx0XHRcdFx0ZnVsbG5hbWU6IGRhdGEuZnVsbG5hbWUsXG5cdFx0XHRcdFx0XHRyb2xlczogW10sXG5cdFx0XHRcdFx0XHRhY3RpdmU6IHRydWUsXG5cdFx0XHRcdFx0XHRyZWFkb25seTogZmFsc2UsXG5cdFx0XHRcdFx0XHRzZXJ2aWNlczoge1xuXHRcdFx0XHRcdFx0XHRlbnJvbGxtZW50OiBqd3Quc2lnbih7aWRfdXNlcjogdXNlcklkfSwgdGhpcy5zZXJ2ZXJDb25maWdbJ0pXVF9TRUNSRVQnXSwge1xuXHRcdFx0XHRcdFx0XHRcdGV4cGlyZXNJbiA6IDMgKiAyNCAqIDYwICogNjAgKiAxMDAwIC8vIDMgZGF5c1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHBob25lbnVtYmVyOiBkYXRhLnBob25lbnVtYmVyXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHR1c2VyLnNldFBhc3N3b3JkKHJhbmRvbVN0cmluZygyMCwgJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyksICgoZXJyLCByZXMpID0+IHtcblx0XHRcdFx0XHRcdHVzZXIuc2F2ZSgpO1xuXG5cdFx0XHRcdFx0XHRsZXQgZW1haWxEYXRhID0ge1xuXHRcdFx0XHRcdFx0XHRmdWxsbmFtZTogdXNlci5mdWxsbmFtZSxcblx0XHRcdFx0XHRcdFx0dXNlcjogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0XHR1cmw6IHRoaXMuc2VydmVyQ29uZmlnWydST09UX1VSTCddICsgJy9lbnJvbGwtYWNjb3VudD8nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuc2VydmVyQ29uZmlnWydTRVJWRVJfVVJMJ10pICsgJyYnICsgdXNlci5zZXJ2aWNlcy5lbnJvbGxtZW50XG5cdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHR0aGlzLnJlYWRGaWxlKCdlbWFpbC10ZW1wbGF0ZXMvZW5yb2xsbWVudC5odG1sJykudGhlbihodG1sID0+IHtcblx0XHRcdFx0XHRcdFx0bGV0IHRlbXBsYXRlID0gaGFuZGxlYmFycy5jb21waWxlKGh0bWwpO1xuXHRcdFx0XHRcdFx0XHRoYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdlcXVhbHMnLCAoYSwgYikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhID09PSBiO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcblx0XHRcdFx0XHRcdFx0dGhpcy5zZW5kRW1haWwodXNlci5lbWFpbCwgJ1Jlc29sdmVJTyAoJyArIFJlc29sdmVJT1NlcnZlci5nZXRDbGllbnROYW1lKCkgKyAnKSAtIEVucm9sbG1lbnQgRW1haWwnLCAnJywgdGVtcGxhdGUoZW1haWxEYXRhKSk7XG5cdFx0XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUodHJ1ZSk7XG5cdFx0XHRcdFx0XHR9LCBlcnJFbWFpbCA9PiByZWplY3QoZXJyRW1haWwpKTtcblx0XHRcdFx0XHR9KSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0cmVzZXRVc2VyUGFzc3dvcmQ6IHtcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0dXNlcklkOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKHVzZXJJZDogc3RyaW5nKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHRcdFx0XHRcblx0XHRcdFx0XHRsZXQgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRPbmUoe19pZDogdXNlcklkfSk7XG5cdFx0XG5cdFx0XHRcdFx0aWYgKHVzZXIpIHtcblxuXHRcdFx0XHRcdFx0dXNlci5zZXJ2aWNlcy5mb3Jnb3RfcGFzc3dvcmQgPSBqd3Quc2lnbih7aWRfdXNlcjogdXNlcklkfSwgdGhpcy5zZXJ2ZXJDb25maWdbJ0pXVF9TRUNSRVQnXSk7XG5cblx0XHRcdFx0XHRcdGxldCBlbWFpbERhdGEgPSB7XG5cdFx0XHRcdFx0XHRcdHVzZXJUb0NoYW5nZVBhc3N3b3JkOiB1c2VyLmZ1bGxuYW1lLFxuXHRcdFx0XHRcdFx0XHR1c2VyV2hvUmVzZXRQYXNzd29yZDogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0XHR1cmw6IHRoaXMuc2VydmVyQ29uZmlnWydST09UX1VSTCddICsgJy9mb3Jnb3QtcGFzc3dvcmQ/JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnNlcnZlckNvbmZpZ1snU0VSVkVSX1VSTCddKSArICcmJyArIHVzZXIuc2VydmljZXMuZm9yZ290X3Bhc3N3b3JkXG5cdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRVc2Vycy51cGRhdGVPbmUoe19pZDogdXNlci5faWR9LCB7JHNldDoge3NlcnZpY2VzOiB1c2VyLnNlcnZpY2VzfX0pLmV4ZWMoKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucmVhZEZpbGUoJ2VtYWlsLXRlbXBsYXRlcy9mb3Jnb3QtcGFzc3dvcmQuaHRtbCcpLnRoZW4oaHRtbCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHRlbXBsYXRlID0gaGFuZGxlYmFycy5jb21waWxlKGh0bWwpO1xuXHRcdFx0XHRcdFx0XHRcdGhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2VxdWFscycsIChhLCBiKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYSA9PT0gYjtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc2VuZEVtYWlsKHVzZXIuZW1haWwsICdSZXNvbHZlSU8gKCcgKyBSZXNvbHZlSU9TZXJ2ZXIuZ2V0Q2xpZW50TmFtZSgpICsgJykgLSBGb3Jnb3QgUGFzc3dvcmQnLCAnJywgdGVtcGxhdGUoZW1haWxEYXRhKSk7XG5cdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHRcdFx0XHR9LCBlcnJFbWFpbCA9PiByZWplY3QoZXJyRW1haWwpKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gcmFuZG9tU3RyaW5nKGxlbmd0aCwgY2hhcnMpIHtcblx0bGV0IHJlc3VsdCA9ICcnO1xuXHRmb3IgKGxldCBpID0gbGVuZ3RoOyBpID4gMDsgLS1pKSB7IHJlc3VsdCArPSBjaGFyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpXTsgfVxuXHRyZXR1cm4gcmVzdWx0O1xufSJdfQ==
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ var simpl_schema_1 = require("simpl-schema");
39
+ var mongoose_1 = require("mongoose");
40
+ var user_collection_1 = require("../collections/user.collection");
41
+ var handlebars = require("handlebars");
42
+ var jwt = require("jsonwebtoken");
43
+ var logged_in_users_collection_1 = require("../collections/logged-in-users.collection");
44
+ var queue_response_collection_1 = require("../collections/queue-response.collection");
45
+ var index_1 = require("../index");
46
+ function loadAccountMethods(methodManager) {
47
+ methodManager.methods({
48
+ setWSAppVersion: {
49
+ skipQueue: true,
50
+ check: new simpl_schema_1.default({
51
+ version: Number
52
+ }),
53
+ function: function (version) {
54
+ return logged_in_users_collection_1.LoggedInUsers.updateOne({ id_ws: this.id_ws }, { $set: { app_version: version } }).exec();
55
+ }
56
+ },
57
+ reloadWS: {
58
+ skipQueue: true,
59
+ check: new simpl_schema_1.default({
60
+ id_ws: String
61
+ }),
62
+ function: function (id_ws) {
63
+ var _this = this;
64
+ return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
65
+ return __generator(this, function (_a) {
66
+ queue_response_collection_1.QueueResponses.create({
67
+ _id: mongoose_1.Types.ObjectId().toHexString(),
68
+ __v: 0,
69
+ method: 'reloadWSCommand',
70
+ method_data: [],
71
+ id_ws: id_ws,
72
+ messageId: 0,
73
+ id_user: this.id_user,
74
+ user: this.user,
75
+ response: {
76
+ messageId: 0,
77
+ hasError: false,
78
+ data: 'reloadWSCommand'
79
+ }
80
+ }).then(function (val) {
81
+ // console.log(val);
82
+ });
83
+ resolve();
84
+ return [2 /*return*/];
85
+ });
86
+ }); });
87
+ }
88
+ },
89
+ reconnectWS: {
90
+ skipQueue: true,
91
+ check: new simpl_schema_1.default({
92
+ id_ws: String
93
+ }),
94
+ function: function (id_ws) {
95
+ var _this = this;
96
+ return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
97
+ return __generator(this, function (_a) {
98
+ queue_response_collection_1.QueueResponses.create({
99
+ _id: mongoose_1.Types.ObjectId().toHexString(),
100
+ __v: 0,
101
+ method: 'reconnectWSCommand',
102
+ method_data: [],
103
+ id_ws: id_ws,
104
+ messageId: 0,
105
+ id_user: this.id_user,
106
+ user: this.user,
107
+ response: {
108
+ messageId: 0,
109
+ hasError: false,
110
+ data: 'reconnectWSCommand'
111
+ }
112
+ });
113
+ resolve();
114
+ return [2 /*return*/];
115
+ });
116
+ }); });
117
+ }
118
+ },
119
+ disconnectWS: {
120
+ skipQueue: true,
121
+ check: new simpl_schema_1.default({
122
+ id_ws: String
123
+ }),
124
+ function: function (id_ws) {
125
+ var _this = this;
126
+ return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
127
+ return __generator(this, function (_a) {
128
+ queue_response_collection_1.QueueResponses.create({
129
+ _id: mongoose_1.Types.ObjectId().toHexString(),
130
+ __v: 0,
131
+ method: 'disconnectWSCommand',
132
+ method_data: [],
133
+ id_ws: id_ws,
134
+ messageId: 0,
135
+ id_user: this.id_user,
136
+ user: this.user,
137
+ response: {
138
+ messageId: 0,
139
+ hasError: false,
140
+ data: 'disconnectWSCommand'
141
+ }
142
+ });
143
+ resolve();
144
+ return [2 /*return*/];
145
+ });
146
+ }); });
147
+ }
148
+ },
149
+ createUserAndEmailEnrollment: {
150
+ check: new simpl_schema_1.default({
151
+ data: {
152
+ type: user_collection_1.Users['simplschema']
153
+ }
154
+ }),
155
+ function: function (data) {
156
+ var _this = this;
157
+ return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
158
+ var userId, user;
159
+ var _this = this;
160
+ return __generator(this, function (_a) {
161
+ switch (_a.label) {
162
+ case 0:
163
+ userId = mongoose_1.Types.ObjectId().toHexString();
164
+ return [4 /*yield*/, user_collection_1.Users.create({
165
+ _id: userId,
166
+ __v: 0,
167
+ username: data.username,
168
+ email: data.email,
169
+ fullname: data.fullname,
170
+ roles: [],
171
+ active: true,
172
+ readonly: false,
173
+ services: {
174
+ enrollment: jwt.sign({ id_user: userId }, this.serverConfig['JWT_SECRET'], {
175
+ expiresIn: 3 * 24 * 60 * 60 * 1000 // 3 days
176
+ })
177
+ },
178
+ phonenumber: data.phonenumber
179
+ })];
180
+ case 1:
181
+ user = _a.sent();
182
+ user.setPassword(randomString(20, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), (function (err, res) {
183
+ user.save();
184
+ var emailData = {
185
+ fullname: user.fullname,
186
+ user: _this.user,
187
+ url: _this.serverConfig['ROOT_URL'] + '/enroll-account?' + encodeURIComponent(_this.serverConfig['SERVER_URL']) + '&' + user.services.enrollment
188
+ };
189
+ _this.readFile('email-templates/enrollment.html').then(function (html) {
190
+ var template = handlebars.compile(html);
191
+ handlebars.registerHelper('equals', function (a, b) {
192
+ return a === b;
193
+ });
194
+ _this.sendEmail(user.email, 'ResolveIO (' + index_1.default.getClientName() + ') - Enrollment Email', '', template(emailData));
195
+ resolve(true);
196
+ }, function (errEmail) { return reject(errEmail); });
197
+ }));
198
+ return [2 /*return*/];
199
+ }
200
+ });
201
+ }); });
202
+ }
203
+ },
204
+ resetUserPassword: {
205
+ check: new simpl_schema_1.default({
206
+ userId: {
207
+ type: String
208
+ }
209
+ }),
210
+ function: function (userId) {
211
+ var _this = this;
212
+ return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
213
+ var user, emailData_1;
214
+ var _this = this;
215
+ return __generator(this, function (_a) {
216
+ switch (_a.label) {
217
+ case 0: return [4 /*yield*/, user_collection_1.Users.findOne({ _id: userId })];
218
+ case 1:
219
+ user = _a.sent();
220
+ if (user) {
221
+ user.services.forgot_password = jwt.sign({ id_user: userId }, this.serverConfig['JWT_SECRET']);
222
+ emailData_1 = {
223
+ userToChangePassword: user.fullname,
224
+ userWhoResetPassword: this.user,
225
+ url: this.serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(this.serverConfig['SERVER_URL']) + '&' + user.services.forgot_password
226
+ };
227
+ user_collection_1.Users.updateOne({ _id: user._id }, { $set: { services: user.services } }).exec(function (err, res) {
228
+ _this.readFile('email-templates/forgot-password.html').then(function (html) {
229
+ var template = handlebars.compile(html);
230
+ handlebars.registerHelper('equals', function (a, b) {
231
+ return a === b;
232
+ });
233
+ _this.sendEmail(user.email, 'ResolveIO (' + index_1.default.getClientName() + ') - Forgot Password', '', template(emailData_1));
234
+ resolve(true);
235
+ }, function (errEmail) { return reject(errEmail); });
236
+ });
237
+ }
238
+ return [2 /*return*/];
239
+ }
240
+ });
241
+ }); });
242
+ }
243
+ }
244
+ });
245
+ }
246
+ exports.loadAccountMethods = loadAccountMethods;
247
+ function randomString(length, chars) {
248
+ var result = '';
249
+ for (var i = length; i > 0; --i) {
250
+ result += chars[Math.floor(Math.random() * chars.length)];
251
+ }
252
+ return result;
253
+ }
@@ -0,0 +1,3 @@
1
+ import { MethodManager } from '../managers/method.manager';
2
+ export declare function loadAWSMethods(methodManager: MethodManager): void;
3
+ //# sourceMappingURL=aws.d.ts.map