@resolveio/server-lib 1.0.0-rc3 → 1.0.0-rc4
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/collections/active-subscription.collection.js +2 -1
- package/collections/app-status.collection.js +2 -1
- package/collections/app-version.collection.js +2 -1
- package/collections/counter.collection.js +2 -1
- package/collections/cron-job-history.collection.js +2 -1
- package/collections/cron-job.collection.js +2 -1
- package/collections/file.collection.js +2 -1
- package/collections/flag.collection.js +2 -1
- package/collections/log.collection.js +2 -1
- package/collections/logged-in-users.collection.js +2 -1
- package/collections/method-call.collection.js +2 -1
- package/collections/method-response.collection.js +2 -1
- package/collections/queue-flag.collection.js +2 -1
- package/collections/queue-method.collection.js +2 -1
- package/collections/queue-response.collection.js +2 -1
- package/collections/support-ticket.collection.js +2 -1
- package/collections/user.collection.js +2 -1
- package/cron/cron.js +2 -1
- package/fixtures/cron-jobs.js +2 -1
- package/fixtures/init.js +2 -1
- package/http/auth.js +2 -1
- package/http/health.js +2 -1
- package/index.js +2 -1
- package/managers/cron.manager.js +2 -1
- package/managers/method.manager.js +2 -1
- package/managers/queue-method.manager.js +2 -1
- package/managers/subscription.manager.js +2 -1
- package/managers/support.manager.js +2 -1
- package/methods/accounts.js +2 -1
- package/methods/aws.js +2 -1
- package/methods/cloudconvert.js +2 -1
- package/methods/collections.js +2 -1
- package/methods/counters.js +2 -1
- package/methods/cron-jobs.js +2 -1
- package/methods/flags.js +2 -1
- package/methods/logs.js +2 -1
- package/methods/pdf.js +2 -1
- package/models/active-subscription.model.js +2 -1
- package/models/app-status.model.js +2 -1
- package/models/app-version.model.js +2 -1
- package/models/collection-document.model.js +2 -1
- package/models/counter.model.js +2 -1
- package/models/cron-job-history.model.js +2 -1
- package/models/cron-job.model.js +2 -1
- package/models/dialog.model.js +2 -1
- package/models/file.model.js +2 -1
- package/models/flag.model.js +2 -1
- package/models/log.model.js +2 -1
- package/models/logged-in-users.model.js +2 -1
- package/models/method-call.model.js +2 -1
- package/models/method-response.model.js +2 -1
- package/models/method.model.js +2 -1
- package/models/pagination.model.js +2 -1
- package/models/permission.model.js +2 -1
- package/models/queue-method.model.js +2 -1
- package/models/queue-response.model.js +2 -1
- package/models/select-data-label.model.js +2 -1
- package/models/server-response.model.js +2 -1
- package/models/subscription.model.js +2 -1
- package/models/support-method.model.js +2 -1
- package/models/support-ticket.model.js +2 -1
- package/models/user.model.js +2 -1
- package/package.json +2 -1
- package/publications/app-status.js +2 -1
- package/publications/app-version.js +2 -1
- package/publications/cron-jobs.js +2 -1
- package/publications/files.js +2 -1
- package/publications/flags.js +2 -1
- package/publications/logs.js +2 -1
- package/publications/method-calls.js +2 -1
- package/publications/method-responses.js +2 -1
- package/publications/super-admin.js +2 -1
- package/publications/support-tickets.js +2 -1
- package/server-app.js +2 -1
- package/support-methods/aws.js +2 -1
- package/support-methods/collections.js +2 -1
- package/support-methods/counters.js +2 -1
- package/support-methods/support.js +2 -1
- package/util/common.js +2 -1
package/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(i,c,l,u){return new(l||(l=Promise))(function(e,r){function o(e){try{n(u.next(e))}catch(e){r(e)}}function t(e){try{n(u.throw(e))}catch(e){r(e)}}function n(r){r.done?e(r.value):new l(function(e){e(r.value)}).then(o,t)}n((u=u.apply(i,c||[])).next())})},__generator=this&&this.__generator||function(o,t){var n,i,c,e,l={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]};return e={next:r(0),throw:r(1),return:r(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function r(r){return function(e){return function(r){if(n)throw new TypeError("Generator is already executing.");for(;l;)try{if(n=1,i&&(c=2&r[0]?i.return:r[0]?i.throw||((c=i.return)&&c.call(i),0):i.next)&&!(c=c.call(i,r[1])).done)return c;switch(i=0,c&&(r=[2&r[0],c.value]),r[0]){case 0:case 1:c=r;break;case 4:return l.label++,{value:r[1],done:!1};case 5:l.label++,i=r[1],r=[0];continue;case 7:r=l.ops.pop(),l.trys.pop();continue;default:if(!(c=0<(c=l.trys).length&&c[c.length-1])&&(6===r[0]||2===r[0])){l=0;continue}if(3===r[0]&&(!c||r[1]>c[0]&&r[1]<c[3])){l.label=r[1];break}if(6===r[0]&&l.label<c[1]){l.label=c[1],c=r;break}if(c&&l.label<c[2]){l.label=c[2],l.ops.push(r);break}c[2]&&l.ops.pop(),l.trys.pop();continue}r=t.call(o,l)}catch(e){r=[6,e],i=0}finally{n=c=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}([r,e])}}};function __export(e){for(var r in e)exports.hasOwnProperty(r)||(exports[r]=e[r])}Object.defineProperty(exports,"__esModule",{value:!0});var mongoose=require("mongoose"),server_app_1=require("./server-app"),ResolveIOServer=function(){function n(t,e){var o=this;n._serverConfig=t,n._client=e,"http://localhost:4200"!==t.ROOT_URL?mongoose.createConnection(t.RESOLVEIO_SUPPORT_MONGO_URL,{useNewUrlParser:!0}).then(function(r){return __awaiter(o,void 0,void 0,function(){var o=this;return __generator(this,function(e){return n._supportDB=r,mongoose.createConnection(t.MONGO_URL,{useNewUrlParser:!0}).then(function(r){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){return n._mainDB=r,n._mainServer=new server_app_1.ResolveIOMainServer(this,n._serverConfig),[2]})})},function(e){process.exit()}),[2]})})},function(e){process.exit()}):(n._supportDB=null,mongoose.createConnection(t.MONGO_URL,{useNewUrlParser:!0}).then(function(r){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){return n._mainDB=r,n._mainServer=new server_app_1.ResolveIOMainServer(this,n._serverConfig),[2]})})},function(e){process.exit()}))}return n.getClientName=function(){return this._client},n.getMainServer=function(){return n._mainServer},n.getMainDB=function(){return n._mainDB},n.getSupportDB=function(){return n._supportDB},n._serverConfig=null,n._mainDB=null,n._supportDB=null,n._mainServer=null,n._client="",n}();exports.default=ResolveIOServer,__export(require("./collections/active-subscription.collection")),__export(require("./collections/app-status.collection")),__export(require("./collections/app-version.collection")),__export(require("./collections/counter.collection")),__export(require("./collections/cron-job-history.collection")),__export(require("./collections/cron-job.collection")),__export(require("./collections/file.collection")),__export(require("./collections/flag.collection")),__export(require("./collections/log.collection")),__export(require("./collections/logged-in-users.collection")),__export(require("./collections/method-call.collection")),__export(require("./collections/method-response.collection")),__export(require("./collections/queue-flag.collection")),__export(require("./collections/queue-method.collection")),__export(require("./collections/queue-response.collection")),__export(require("./collections/support-ticket.collection")),__export(require("./collections/user.collection")),__export(require("./managers/cron.manager")),__export(require("./managers/method.manager")),__export(require("./managers/queue-method.manager")),__export(require("./managers/subscription.manager")),__export(require("./managers/support.manager")),__export(require("./models/pagination.model"));
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(i,c,l,u){return new(l||(l=Promise))(function(e,r){function o(e){try{n(u.next(e))}catch(e){r(e)}}function t(e){try{n(u.throw(e))}catch(e){r(e)}}function n(r){r.done?e(r.value):new l(function(e){e(r.value)}).then(o,t)}n((u=u.apply(i,c||[])).next())})},__generator=this&&this.__generator||function(o,t){var n,i,c,e,l={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]};return e={next:r(0),throw:r(1),return:r(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function r(r){return function(e){return function(r){if(n)throw new TypeError("Generator is already executing.");for(;l;)try{if(n=1,i&&(c=2&r[0]?i.return:r[0]?i.throw||((c=i.return)&&c.call(i),0):i.next)&&!(c=c.call(i,r[1])).done)return c;switch(i=0,c&&(r=[2&r[0],c.value]),r[0]){case 0:case 1:c=r;break;case 4:return l.label++,{value:r[1],done:!1};case 5:l.label++,i=r[1],r=[0];continue;case 7:r=l.ops.pop(),l.trys.pop();continue;default:if(!(c=0<(c=l.trys).length&&c[c.length-1])&&(6===r[0]||2===r[0])){l=0;continue}if(3===r[0]&&(!c||r[1]>c[0]&&r[1]<c[3])){l.label=r[1];break}if(6===r[0]&&l.label<c[1]){l.label=c[1],c=r;break}if(c&&l.label<c[2]){l.label=c[2],l.ops.push(r);break}c[2]&&l.ops.pop(),l.trys.pop();continue}r=t.call(o,l)}catch(e){r=[6,e],i=0}finally{n=c=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}([r,e])}}};function __export(e){for(var r in e)exports.hasOwnProperty(r)||(exports[r]=e[r])}Object.defineProperty(exports,"__esModule",{value:!0});var mongoose=require("mongoose"),server_app_1=require("./server-app"),ResolveIOServer=function(){function n(t,e){var o=this;n._serverConfig=t,n._client=e,"http://localhost:4200"!==t.ROOT_URL?mongoose.createConnection(t.RESOLVEIO_SUPPORT_MONGO_URL,{useNewUrlParser:!0}).then(function(r){return __awaiter(o,void 0,void 0,function(){var o=this;return __generator(this,function(e){return n._supportDB=r,mongoose.createConnection(t.MONGO_URL,{useNewUrlParser:!0}).then(function(r){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){return n._mainDB=r,n._mainServer=new server_app_1.ResolveIOMainServer(this,n._serverConfig),[2]})})},function(e){process.exit()}),[2]})})},function(e){process.exit()}):(n._supportDB=null,mongoose.createConnection(t.MONGO_URL,{useNewUrlParser:!0}).then(function(r){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){return n._mainDB=r,n._mainServer=new server_app_1.ResolveIOMainServer(this,n._serverConfig),[2]})})},function(e){process.exit()}))}return n.getClientName=function(){return this._client},n.getMainServer=function(){return n._mainServer},n.getMainDB=function(){return n._mainDB},n.getSupportDB=function(){return n._supportDB},n._serverConfig=null,n._mainDB=null,n._supportDB=null,n._mainServer=null,n._client="",n}();exports.default=ResolveIOServer,__export(require("./collections/active-subscription.collection")),__export(require("./collections/app-status.collection")),__export(require("./collections/app-version.collection")),__export(require("./collections/counter.collection")),__export(require("./collections/cron-job-history.collection")),__export(require("./collections/cron-job.collection")),__export(require("./collections/file.collection")),__export(require("./collections/flag.collection")),__export(require("./collections/log.collection")),__export(require("./collections/logged-in-users.collection")),__export(require("./collections/method-call.collection")),__export(require("./collections/method-response.collection")),__export(require("./collections/queue-flag.collection")),__export(require("./collections/queue-method.collection")),__export(require("./collections/queue-response.collection")),__export(require("./collections/support-ticket.collection")),__export(require("./collections/user.collection")),__export(require("./managers/cron.manager")),__export(require("./managers/method.manager")),__export(require("./managers/queue-method.manager")),__export(require("./managers/subscription.manager")),__export(require("./managers/support.manager")),__export(require("./models/pagination.model"));
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJzZXJ2ZXJfYXBwXzEiLCJSZXNvbHZlSU9TZXJ2ZXIiLCJzZXJ2ZXJDb25maWciLCJjbGllbnQiLCJfdGhpcyIsInRoaXMiLCJfc2VydmVyQ29uZmlnIiwiX2NsaWVudCIsImNyZWF0ZUNvbm5lY3Rpb24iLCJ1c2VOZXdVcmxQYXJzZXIiLCJ0aGVuIiwiZGIiLCJfX2F3YWl0ZXIiLCJfc3VwcG9ydERCIiwiZGJNYWluIiwiX21haW5EQiIsIl9tYWluU2VydmVyIiwiUmVzb2x2ZUlPTWFpblNlcnZlciIsImVyciIsInByb2Nlc3MiLCJleGl0IiwiZ2V0Q2xpZW50TmFtZSIsImdldE1haW5TZXJ2ZXIiLCJnZXRNYWluREIiLCJnZXRTdXBwb3J0REIiLCJfX2V4cG9ydCJdLCJtYXBwaW5ncyI6InFnREFBQSxJQUFBQSxTQUFBQyxRQUFBLFlBQ0FDLGFBQUFELFFBQUEsZ0JBRUFFLGdCQUFBLFdBT0MsU0FBQUEsRUFBWUMsRUFBY0MsR0FBMUIsSUFBQUMsRUFBQUMsS0FFQ0osRUFBZ0JLLGNBQWdCSixFQUNoQ0QsRUFBZ0JNLFFBQVVKLEVBRU8sMEJBQTdCRCxFQUF1QixTQUMxQkosU0FBU1UsaUJBQWlCTixFQUEwQyw0QkFBRyxDQUFFTyxpQkFBaUIsSUFBUUMsS0FBSyxTQUFPQyxHQUFFLE9BQUFDLFVBQUFSLE9BQUEsT0FBQSxFQUFBLGlFQUMvR0gsRUFBZ0JZLFdBQWFGLEVBRTdCYixTQUFTVSxpQkFBaUJOLEVBQXdCLFVBQUcsQ0FBRU8saUJBQWlCLElBQVFDLEtBQUssU0FBT0ksR0FBTSxPQUFBRixVQUFBUixPQUFBLE9BQUEsRUFBQSxzREFDakdILEVBQWdCYyxRQUFVRCxFQUMxQmIsRUFBZ0JlLFlBQWMsSUFBSWhCLGFBQUFpQixvQkFBb0JaLEtBQU1KLEVBQWdCSyx3QkFDMUUsU0FBQ1ksR0FDSEMsUUFBUUMsa0JBRVAsU0FBQ0YsR0FDSEMsUUFBUUMsVUFJVG5CLEVBQWdCWSxXQUFhLEtBRTdCZixTQUFTVSxpQkFBaUJOLEVBQXdCLFVBQUcsQ0FBRU8saUJBQWlCLElBQVFDLEtBQUssU0FBT0ksR0FBTSxPQUFBRixVQUFBUixPQUFBLE9BQUEsRUFBQSxzREFDakdILEVBQWdCYyxRQUFVRCxFQUMxQmIsRUFBZ0JlLFlBQWMsSUFBSWhCLGFBQUFpQixvQkFBb0JaLEtBQU1KLEVBQWdCSyx3QkFDMUUsU0FBQ1ksR0FDSEMsUUFBUUMsVUFvQlosT0FmZW5CLEVBQUFvQixjQUFkLFdBQ0MsT0FBT2hCLEtBQUtFLFNBR0NOLEVBQUFxQixjQUFkLFdBQ0MsT0FBT3JCLEVBQWdCZSxhQUdWZixFQUFBc0IsVUFBZCxXQUNDLE9BQU90QixFQUFnQmMsU0FHVmQsRUFBQXVCLGFBQWQsV0FDQyxPQUFPdkIsRUFBZ0JZLFlBbERUWixFQUFBSyxjQUFnQixLQUNoQkwsRUFBQWMsUUFBVSxLQUNWZCxFQUFBWSxXQUFhLEtBQ2JaLEVBQUFlLFlBQWMsS0FDZGYsRUFBQU0sUUFBVSxHQWdEMUJOLEVBckRBLG1CQUFxQkEsZ0JBdURyQndCLFNBQUExQixRQUFBLGlEQUNBMEIsU0FBQTFCLFFBQUEsd0NBQ0EwQixTQUFBMUIsUUFBQSx5Q0FDQTBCLFNBQUExQixRQUFBLHFDQUNBMEIsU0FBQTFCLFFBQUEsOENBQ0EwQixTQUFBMUIsUUFBQSxzQ0FDQTBCLFNBQUExQixRQUFBLGtDQUNBMEIsU0FBQTFCLFFBQUEsa0NBQ0EwQixTQUFBMUIsUUFBQSxpQ0FDQTBCLFNBQUExQixRQUFBLDZDQUNBMEIsU0FBQTFCLFFBQUEseUNBQ0EwQixTQUFBMUIsUUFBQSw2Q0FDQTBCLFNBQUExQixRQUFBLHdDQUNBMEIsU0FBQTFCLFFBQUEsMENBQ0EwQixTQUFBMUIsUUFBQSw0Q0FDQTBCLFNBQUExQixRQUFBLDRDQUNBMEIsU0FBQTFCLFFBQUEsa0NBQ0EwQixTQUFBMUIsUUFBQSw0QkFDQTBCLFNBQUExQixRQUFBLDhCQUNBMEIsU0FBQTFCLFFBQUEsb0NBQ0EwQixTQUFBMUIsUUFBQSxvQ0FDQTBCLFNBQUExQixRQUFBLCtCQWFBMEIsU0FBQTFCLFFBQUEiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb25nb29zZSBmcm9tICdtb25nb29zZSc7XG5pbXBvcnQgeyBSZXNvbHZlSU9NYWluU2VydmVyIH0gZnJvbSAnLi9zZXJ2ZXItYXBwJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVzb2x2ZUlPU2VydmVyIHtcblx0cHJpdmF0ZSBzdGF0aWMgX3NlcnZlckNvbmZpZyA9IG51bGw7XG5cdHByaXZhdGUgc3RhdGljIF9tYWluREIgPSBudWxsO1xuXHRwcml2YXRlIHN0YXRpYyBfc3VwcG9ydERCID0gbnVsbDtcblx0cHJpdmF0ZSBzdGF0aWMgX21haW5TZXJ2ZXIgPSBudWxsO1xuXHRwcml2YXRlIHN0YXRpYyBfY2xpZW50ID0gJyc7XG5cblx0Y29uc3RydWN0b3Ioc2VydmVyQ29uZmlnLCBjbGllbnQ6IHN0cmluZykge1xuXG5cdFx0UmVzb2x2ZUlPU2VydmVyLl9zZXJ2ZXJDb25maWcgPSBzZXJ2ZXJDb25maWc7XG5cdFx0UmVzb2x2ZUlPU2VydmVyLl9jbGllbnQgPSBjbGllbnQ7XG5cblx0XHRpZiAoc2VydmVyQ29uZmlnWydST09UX1VSTCddICE9PSAnaHR0cDovL2xvY2FsaG9zdDo0MjAwJykge1xuXHRcdFx0bW9uZ29vc2UuY3JlYXRlQ29ubmVjdGlvbihzZXJ2ZXJDb25maWdbJ1JFU09MVkVJT19TVVBQT1JUX01PTkdPX1VSTCddLCB7IHVzZU5ld1VybFBhcnNlcjogdHJ1ZSB9KS50aGVuKGFzeW5jIChkYikgPT4ge1xuXHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuX3N1cHBvcnREQiA9IGRiO1xuXHRcdFx0XG5cdFx0XHRcdG1vbmdvb3NlLmNyZWF0ZUNvbm5lY3Rpb24oc2VydmVyQ29uZmlnWydNT05HT19VUkwnXSwgeyB1c2VOZXdVcmxQYXJzZXI6IHRydWUgfSkudGhlbihhc3luYyAoZGJNYWluKSA9PiB7XG5cdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLl9tYWluREIgPSBkYk1haW47XG5cdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLl9tYWluU2VydmVyID0gbmV3IFJlc29sdmVJT01haW5TZXJ2ZXIodGhpcywgUmVzb2x2ZUlPU2VydmVyLl9zZXJ2ZXJDb25maWcpO1xuXHRcdFx0XHR9LCAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0cHJvY2Vzcy5leGl0KCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSwgKGVycikgPT4ge1xuXHRcdFx0XHRwcm9jZXNzLmV4aXQoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdFJlc29sdmVJT1NlcnZlci5fc3VwcG9ydERCID0gbnVsbDtcblx0XHRcdFxuXHRcdFx0bW9uZ29vc2UuY3JlYXRlQ29ubmVjdGlvbihzZXJ2ZXJDb25maWdbJ01PTkdPX1VSTCddLCB7IHVzZU5ld1VybFBhcnNlcjogdHJ1ZSB9KS50aGVuKGFzeW5jIChkYk1haW4pID0+IHtcblx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLl9tYWluREIgPSBkYk1haW47XG5cdFx0XHRcdFJlc29sdmVJT1NlcnZlci5fbWFpblNlcnZlciA9IG5ldyBSZXNvbHZlSU9NYWluU2VydmVyKHRoaXMsIFJlc29sdmVJT1NlcnZlci5fc2VydmVyQ29uZmlnKTtcblx0XHRcdH0sIChlcnIpID0+IHtcblx0XHRcdFx0cHJvY2Vzcy5leGl0KCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIGdldENsaWVudE5hbWUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NsaWVudDtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgZ2V0TWFpblNlcnZlcigpIHtcblx0XHRyZXR1cm4gUmVzb2x2ZUlPU2VydmVyLl9tYWluU2VydmVyO1xuXHR9XG5cblx0cHVibGljIHN0YXRpYyBnZXRNYWluREIoKSB7XG5cdFx0cmV0dXJuIFJlc29sdmVJT1NlcnZlci5fbWFpbkRCO1xuXHR9XG5cblx0cHVibGljIHN0YXRpYyBnZXRTdXBwb3J0REIoKSB7XG5cdFx0cmV0dXJuIFJlc29sdmVJT1NlcnZlci5fc3VwcG9ydERCO1xuXHR9XG59XG5cbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbnMvYWN0aXZlLXN1YnNjcmlwdGlvbi5jb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbnMvYXBwLXN0YXR1cy5jb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbnMvYXBwLXZlcnNpb24uY29sbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb25zL2NvdW50ZXIuY29sbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb25zL2Nyb24tam9iLWhpc3RvcnkuY29sbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb25zL2Nyb24tam9iLmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsZWN0aW9ucy9maWxlLmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsZWN0aW9ucy9mbGFnLmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsZWN0aW9ucy9sb2cuY29sbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb25zL2xvZ2dlZC1pbi11c2Vycy5jb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbnMvbWV0aG9kLWNhbGwuY29sbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb25zL21ldGhvZC1yZXNwb25zZS5jb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbnMvcXVldWUtZmxhZy5jb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbnMvcXVldWUtbWV0aG9kLmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsZWN0aW9ucy9xdWV1ZS1yZXNwb25zZS5jb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbnMvc3VwcG9ydC10aWNrZXQuY29sbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb25zL3VzZXIuY29sbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL21hbmFnZXJzL2Nyb24ubWFuYWdlcic7XG5leHBvcnQgKiBmcm9tICcuL21hbmFnZXJzL21ldGhvZC5tYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbWFuYWdlcnMvcXVldWUtbWV0aG9kLm1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9tYW5hZ2Vycy9zdWJzY3JpcHRpb24ubWFuYWdlcic7XG5leHBvcnQgKiBmcm9tICcuL21hbmFnZXJzL3N1cHBvcnQubWFuYWdlcic7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9hY3RpdmUtc3Vic2NyaXB0aW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2FwcC1zdGF0dXMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvYXBwLXZlcnNpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvY29sbGVjdGlvbi1kb2N1bWVudC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9jb3VudGVyLm1vZGVsJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2Nyb24tam9iLWhpc3RvcnkubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvY3Jvbi1qb2IubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZGlhbG9nLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2ZpbGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZmxhZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9sb2cubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvbWV0aG9kLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3BhZ2luYXRpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvcGVybWlzc2lvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9zZWxlY3QtZGF0YS1sYWJlbC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9zZXJ2ZXItcmVzcG9uc2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvc3VwcG9ydC1tZXRob2QubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvc3VwcG9ydC10aWNrZXQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvdXNlci5tb2RlbCc7Il19
|
package/managers/cron.manager.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(a,i,c,s){return new(c||(c=Promise))(function(e,n){function t(e){try{r(s.next(e))}catch(e){n(e)}}function o(e){try{r(s.throw(e))}catch(e){n(e)}}function r(n){n.done?e(n.value):new c(function(e){e(n.value)}).then(t,o)}r((s=s.apply(a,i||[])).next())})},__generator=this&&this.__generator||function(t,o){var r,a,i,e,c={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(r)throw new TypeError("Generator is already executing.");for(;c;)try{if(r=1,a&&(i=2&n[0]?a.return:n[0]?a.throw||((i=a.return)&&i.call(a),0):a.next)&&!(i=i.call(a,n[1])).done)return i;switch(a=0,i&&(n=[2&n[0],i.value]),n[0]){case 0:case 1:i=n;break;case 4:return c.label++,{value:n[1],done:!1};case 5:c.label++,a=n[1],n=[0];continue;case 7:n=c.ops.pop(),c.trys.pop();continue;default:if(!(i=0<(i=c.trys).length&&i[i.length-1])&&(6===n[0]||2===n[0])){c=0;continue}if(3===n[0]&&(!i||n[1]>i[0]&&n[1]<i[3])){c.label=n[1];break}if(6===n[0]&&c.label<i[1]){c.label=i[1],i=n;break}if(i&&c.label<i[2]){c.label=i[2],c.ops.push(n);break}i[2]&&c.ops.pop(),c.trys.pop();continue}n=o.call(t,c)}catch(e){n=[6,e],a=0}finally{r=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 cron_job_collection_1=require("../collections/cron-job.collection"),CronJobManager=require("../cron/cron"),CronManager=function(){function e(e){this._mainServer=e,this._cronManager=new CronJobManager,this.loadCronJobs()}return e.prototype.loadCronJobs=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(e){switch(e.label){case 0:return[4,cron_job_collection_1.CronJobs.find({}).exec()];case 1:return e.sent().forEach(function(e){n.addCronJob(e)}),[2]}})})},e.prototype.doesCronJobExist=function(e){return this._cronManager.exists(e.name)},e.prototype.doesCronJobNameExist=function(e){return this._cronManager.exists(e)},e.prototype.addCronJob=function(e){var n=this;if(!this.doesCronJobExist(e))if(e.timezone);else{var t={start:!0};e.timezone&&(t.timeZone=e.timezone),this._cronManager.add(e.name,e.time_to_run,function(){n.runCronJob(e)},t)}},e.prototype.updateCronJob=function(e){this.doesCronJobExist(e)&&this._cronManager.update(e.name,e.time_to_run)},e.prototype.removeCronJob=function(e){this.doesCronJobNameExist(e)&&this._cronManager.deleteJob(e)},e.prototype.startCronJob=function(e){this.doesCronJobExist(e)&&this._cronManager.start(e.name)},e.prototype.stopCronJob=function(e){this.doesCronJobExist(e)&&this._cronManager.start(e.name)},e.prototype.stopAllCronJobs=function(){this._cronManager.stopAll()},e.prototype.checkCronJobsForUpdates=function(){return __awaiter(this,void 0,void 0,function(){var n,t=this;return __generator(this,function(e){switch(e.label){case 0:return[4,cron_job_collection_1.CronJobs.find({}).exec()];case 1:return n=e.sent(),this._cronManager.getJobs().forEach(function(e){-1===n.map(function(e){return e.name}).indexOf(e)&&t.removeCronJob(e)}),n.forEach(function(e){t.addCronJob(e)}),n.forEach(function(e){t.updateCronJob(e)}),[2]}})})},e.prototype.runCronJob=function(t){var o=this,e=new Date;(!t.next_run||e.getTime()>=t.next_run.getTime())&&cron_job_collection_1.CronJobs.findOneAndUpdate({$and:[{_id:t._id},{running:!1}]},{$set:{running:!0}}).exec(function(e,n){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return n?t.method_run_data?[4,this._mainServer.getMethodManager().callMethodCron(t.method_run,t.method_run_data)]:[3,2]:[3,9];case 1:return e.sent(),[3,4];case 2:return[4,this._mainServer.getMethodManager().callMethodCron(t.method_run)];case 3:e.sent(),e.label=4;case 4:return t.method_complete?t.method_complete_data?[4,this._mainServer.getMethodManager().callMethodCron(t.method_complete,t.method_complete_data)]:[3,6]:[3,8];case 5:return e.sent(),[3,8];case 6:return[4,this._mainServer.getMethodManager().callMethodCron(t.method_complete)];case 7:e.sent(),e.label=8;case 8:t.repeat?cron_job_collection_1.CronJobs.updateOne({$and:[{_id:t._id},{running:!0}]},{$set:{running:!1,next_run:this._cronManager.getJob(t.name).nextDates().toDate()}}).exec():cron_job_collection_1.CronJobs.deleteOne({_id:t._id}).exec(),e.label=9;case 9:return[2]}})})})},e}();exports.CronManager=CronManager;
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(a,i,c,s){return new(c||(c=Promise))(function(e,n){function t(e){try{r(s.next(e))}catch(e){n(e)}}function o(e){try{r(s.throw(e))}catch(e){n(e)}}function r(n){n.done?e(n.value):new c(function(e){e(n.value)}).then(t,o)}r((s=s.apply(a,i||[])).next())})},__generator=this&&this.__generator||function(t,o){var r,a,i,e,c={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(r)throw new TypeError("Generator is already executing.");for(;c;)try{if(r=1,a&&(i=2&n[0]?a.return:n[0]?a.throw||((i=a.return)&&i.call(a),0):a.next)&&!(i=i.call(a,n[1])).done)return i;switch(a=0,i&&(n=[2&n[0],i.value]),n[0]){case 0:case 1:i=n;break;case 4:return c.label++,{value:n[1],done:!1};case 5:c.label++,a=n[1],n=[0];continue;case 7:n=c.ops.pop(),c.trys.pop();continue;default:if(!(i=0<(i=c.trys).length&&i[i.length-1])&&(6===n[0]||2===n[0])){c=0;continue}if(3===n[0]&&(!i||n[1]>i[0]&&n[1]<i[3])){c.label=n[1];break}if(6===n[0]&&c.label<i[1]){c.label=i[1],i=n;break}if(i&&c.label<i[2]){c.label=i[2],c.ops.push(n);break}i[2]&&c.ops.pop(),c.trys.pop();continue}n=o.call(t,c)}catch(e){n=[6,e],a=0}finally{r=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 cron_job_collection_1=require("../collections/cron-job.collection"),CronJobManager=require("../cron/cron"),CronManager=function(){function e(e){this._mainServer=e,this._cronManager=new CronJobManager,this.loadCronJobs()}return e.prototype.loadCronJobs=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(e){switch(e.label){case 0:return[4,cron_job_collection_1.CronJobs.find({}).exec()];case 1:return e.sent().forEach(function(e){n.addCronJob(e)}),[2]}})})},e.prototype.doesCronJobExist=function(e){return this._cronManager.exists(e.name)},e.prototype.doesCronJobNameExist=function(e){return this._cronManager.exists(e)},e.prototype.addCronJob=function(e){var n=this;if(!this.doesCronJobExist(e))if(e.timezone);else{var t={start:!0};e.timezone&&(t.timeZone=e.timezone),this._cronManager.add(e.name,e.time_to_run,function(){n.runCronJob(e)},t)}},e.prototype.updateCronJob=function(e){this.doesCronJobExist(e)&&this._cronManager.update(e.name,e.time_to_run)},e.prototype.removeCronJob=function(e){this.doesCronJobNameExist(e)&&this._cronManager.deleteJob(e)},e.prototype.startCronJob=function(e){this.doesCronJobExist(e)&&this._cronManager.start(e.name)},e.prototype.stopCronJob=function(e){this.doesCronJobExist(e)&&this._cronManager.start(e.name)},e.prototype.stopAllCronJobs=function(){this._cronManager.stopAll()},e.prototype.checkCronJobsForUpdates=function(){return __awaiter(this,void 0,void 0,function(){var n,t=this;return __generator(this,function(e){switch(e.label){case 0:return[4,cron_job_collection_1.CronJobs.find({}).exec()];case 1:return n=e.sent(),this._cronManager.getJobs().forEach(function(e){-1===n.map(function(e){return e.name}).indexOf(e)&&t.removeCronJob(e)}),n.forEach(function(e){t.addCronJob(e)}),n.forEach(function(e){t.updateCronJob(e)}),[2]}})})},e.prototype.runCronJob=function(t){var o=this,e=new Date;(!t.next_run||e.getTime()>=t.next_run.getTime())&&cron_job_collection_1.CronJobs.findOneAndUpdate({$and:[{_id:t._id},{running:!1}]},{$set:{running:!0}}).exec(function(e,n){return __awaiter(o,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return n?t.method_run_data?[4,this._mainServer.getMethodManager().callMethodCron(t.method_run,t.method_run_data)]:[3,2]:[3,9];case 1:return e.sent(),[3,4];case 2:return[4,this._mainServer.getMethodManager().callMethodCron(t.method_run)];case 3:e.sent(),e.label=4;case 4:return t.method_complete?t.method_complete_data?[4,this._mainServer.getMethodManager().callMethodCron(t.method_complete,t.method_complete_data)]:[3,6]:[3,8];case 5:return e.sent(),[3,8];case 6:return[4,this._mainServer.getMethodManager().callMethodCron(t.method_complete)];case 7:e.sent(),e.label=8;case 8:t.repeat?cron_job_collection_1.CronJobs.updateOne({$and:[{_id:t._id},{running:!0}]},{$set:{running:!1,next_run:this._cronManager.getJob(t.name).nextDates().toDate()}}).exec():cron_job_collection_1.CronJobs.deleteOne({_id:t._id}).exec(),e.label=9;case 9:return[2]}})})})},e}();exports.CronManager=CronManager;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2Vycy9jcm9uLm1hbmFnZXIudHMiXSwibmFtZXMiOlsiY3Jvbl9qb2JfY29sbGVjdGlvbl8xIiwicmVxdWlyZSIsIkNyb25Kb2JNYW5hZ2VyIiwiQ3Jvbk1hbmFnZXIiLCJtYWluU2VydmVyIiwidGhpcyIsIl9tYWluU2VydmVyIiwiX2Nyb25NYW5hZ2VyIiwibG9hZENyb25Kb2JzIiwicHJvdG90eXBlIiwiQ3JvbkpvYnMiLCJmaW5kIiwiZXhlYyIsIl9hIiwic2VudCIsImZvckVhY2giLCJqb2IiLCJfdGhpcyIsImFkZENyb25Kb2IiLCJkb2VzQ3JvbkpvYkV4aXN0IiwiY3JvbiIsImV4aXN0cyIsIm5hbWUiLCJkb2VzQ3JvbkpvYk5hbWVFeGlzdCIsImNyb25fbmFtZSIsInRpbWV6b25lIiwiY3Jvbk9wdGlvbnMiLCJzdGFydCIsImFkZCIsInRpbWVfdG9fcnVuIiwicnVuQ3JvbkpvYiIsInVwZGF0ZUNyb25Kb2IiLCJ1cGRhdGUiLCJyZW1vdmVDcm9uSm9iIiwiZGVsZXRlSm9iIiwic3RhcnRDcm9uSm9iIiwic3RvcENyb25Kb2IiLCJzdG9wQWxsQ3JvbkpvYnMiLCJzdG9wQWxsIiwiY2hlY2tDcm9uSm9ic0ZvclVwZGF0ZXMiLCJqb2JzIiwiZ2V0Sm9icyIsImNyb25Kb2IiLCJtYXAiLCJhIiwiaW5kZXhPZiIsIm5vdyIsIkRhdGUiLCJuZXh0X3J1biIsImdldFRpbWUiLCJmaW5kT25lQW5kVXBkYXRlIiwiJGFuZCIsIl9pZCIsInJ1bm5pbmciLCIkc2V0IiwiZXJyIiwicmVzIiwiX19hd2FpdGVyIiwibWV0aG9kX3J1bl9kYXRhIiwiZ2V0TWV0aG9kTWFuYWdlciIsImNhbGxNZXRob2RDcm9uIiwibWV0aG9kX3J1biIsIm1ldGhvZF9jb21wbGV0ZSIsIm1ldGhvZF9jb21wbGV0ZV9kYXRhIiwicmVwZWF0IiwidXBkYXRlT25lIiwiZ2V0Sm9iIiwibmV4dERhdGVzIiwidG9EYXRlIiwiZGVsZXRlT25lIiwiZXhwb3J0cyJd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ZUFBZXhDLEVBQUt5QyxvQkFBOURoRCxFQUFBQywrQkFHR00sRUFBSzBDLGdCQUNKMUMsRUFBSzJDLHFCQUNSLENBQUEsRUFBTTFELEtBQUtDLFlBQVlxRCxtQkFBbUJDLGVBQWV4QyxFQUFLMEMsZ0JBQWlCMUMsRUFBSzJDLHVCQURqRixDQUFBLEVBQUEsR0FERCxDQUFBLEVBQUEsaUJBRUZsRCxFQUFBQyxvQkFHQSxNQUFBLENBQUEsRUFBTVQsS0FBS0MsWUFBWXFELG1CQUFtQkMsZUFBZXhDLEVBQUswQyx5QkFBOURqRCxFQUFBQyx3QkFJRU0sRUFBSzRDLE9BQ1JoRSxzQkFBQVUsU0FBU3VELFVBQVUsQ0FDbEJkLEtBQU0sQ0FDTCxDQUFDQyxJQUFLaEMsRUFBS2dDLEtBQ1gsQ0FBQ0MsU0FBUyxLQUVULENBQUNDLEtBQU0sQ0FBQ0QsU0FBUyxFQUFPTCxTQUFVM0MsS0FBS0UsYUFBYTJELE9BQU85QyxFQUFLRSxNQUFNNkMsWUFBWUMsWUFBWXhELE9BR2pHWixzQkFBQVUsU0FBUzJELFVBQVUsQ0FBQ2pCLElBQUtoQyxFQUFLZ0MsTUFBTXhDLDBDQU0xQ1QsRUFySkEsR0FBYW1FLFFBQUFuRSxZQUFBQSIsImZpbGUiOiJtYW5hZ2Vycy9jcm9uLm1hbmFnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcm9uSm9iTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvY3Jvbi1qb2IubW9kZWwnO1xuaW1wb3J0IHsgQ3JvbkpvYnMgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jcm9uLWpvYi5jb2xsZWN0aW9uJztcbmltcG9ydCB7IFJlc29sdmVJT01haW5TZXJ2ZXIgfSBmcm9tICcuLi9zZXJ2ZXItYXBwJztcbmxldCBDcm9uSm9iTWFuYWdlciA9IHJlcXVpcmUoJy4uL2Nyb24vY3JvbicpO1xuXG5leHBvcnQgY2xhc3MgQ3Jvbk1hbmFnZXIge1xuXG5cdHByaXZhdGUgX2Nyb25NYW5hZ2VyO1xuXHRwcml2YXRlIF9tYWluU2VydmVyOiBSZXNvbHZlSU9NYWluU2VydmVyO1xuXG5cdGNvbnN0cnVjdG9yKG1haW5TZXJ2ZXIpIHtcblx0XHR0aGlzLl9tYWluU2VydmVyID0gbWFpblNlcnZlcjtcblxuXHRcdHRoaXMuX2Nyb25NYW5hZ2VyID0gbmV3IENyb25Kb2JNYW5hZ2VyKCk7XG5cdFx0dGhpcy5sb2FkQ3JvbkpvYnMoKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgbG9hZENyb25Kb2JzKCkge1xuXHRcdGxldCBqb2JzID0gYXdhaXQgQ3JvbkpvYnMuZmluZCh7fSkuZXhlYygpO1xuXG5cdFx0am9icy5mb3JFYWNoKGpvYiA9PiB7XG5cdFx0XHR0aGlzLmFkZENyb25Kb2Ioam9iKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZG9lc0Nyb25Kb2JFeGlzdChjcm9uOiBDcm9uSm9iTW9kZWwpIHtcblx0XHRyZXR1cm4gdGhpcy5fY3Jvbk1hbmFnZXIuZXhpc3RzKGNyb24ubmFtZSk7XG5cdH1cblxuXHRwcml2YXRlIGRvZXNDcm9uSm9iTmFtZUV4aXN0KGNyb25fbmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2Nyb25NYW5hZ2VyLmV4aXN0cyhjcm9uX25hbWUpO1xuXHR9XG5cblx0cHJpdmF0ZSBhZGRDcm9uSm9iKGNyb246IENyb25Kb2JNb2RlbCkge1xuXHRcdGlmICghdGhpcy5kb2VzQ3JvbkpvYkV4aXN0KGNyb24pKSB7XG5cdFx0XHRpZiAoY3Jvbi50aW1lem9uZSkge1xuXG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0bGV0IGNyb25PcHRpb25zID0ge1xuXHRcdFx0XHRcdHN0YXJ0OiB0cnVlLFxuXHRcdFx0XHRcdC8vIG9uQ29tcGxldGU6ICgpID0+IHtcblx0XHRcdFx0XHQvLyBcdHRoaXMucnVuQ3JvbkpvYkNvbXBsZXRlZChjcm9uKTtcblx0XHRcdFx0XHQvLyB9LFxuXHRcdFx0XHRcdC8vIHRpbWVab25lOiBjcm9uLnRpbWV6b25lXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0aWYgKGNyb24udGltZXpvbmUpIHtcblx0XHRcdFx0XHRjcm9uT3B0aW9uc1sndGltZVpvbmUnXSA9IGNyb24udGltZXpvbmU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9jcm9uTWFuYWdlci5hZGQoXG5cdFx0XHRcdFx0Y3Jvbi5uYW1lLFxuXHRcdFx0XHRcdGNyb24udGltZV90b19ydW4sXG5cdFx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5ydW5Dcm9uSm9iKGNyb24pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Y3Jvbk9wdGlvbnNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZUNyb25Kb2IoY3JvbjogQ3JvbkpvYk1vZGVsKSB7XG5cdFx0aWYgKHRoaXMuZG9lc0Nyb25Kb2JFeGlzdChjcm9uKSkge1xuXHRcdFx0dGhpcy5fY3Jvbk1hbmFnZXIudXBkYXRlKGNyb24ubmFtZSwgY3Jvbi50aW1lX3RvX3J1bik7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSByZW1vdmVDcm9uSm9iKGNyb25fbmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuZG9lc0Nyb25Kb2JOYW1lRXhpc3QoY3Jvbl9uYW1lKSkge1xuXHRcdFx0dGhpcy5fY3Jvbk1hbmFnZXIuZGVsZXRlSm9iKGNyb25fbmFtZSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdGFydENyb25Kb2IoY3JvbjogQ3JvbkpvYk1vZGVsKSB7XG5cdFx0aWYgKHRoaXMuZG9lc0Nyb25Kb2JFeGlzdChjcm9uKSkge1xuXHRcdFx0dGhpcy5fY3Jvbk1hbmFnZXIuc3RhcnQoY3Jvbi5uYW1lKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0b3BDcm9uSm9iKGNyb246IENyb25Kb2JNb2RlbCkge1xuXHRcdGlmICh0aGlzLmRvZXNDcm9uSm9iRXhpc3QoY3JvbikpIHtcblx0XHRcdHRoaXMuX2Nyb25NYW5hZ2VyLnN0YXJ0KGNyb24ubmFtZSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdG9wQWxsQ3JvbkpvYnMoKSB7XG5cdFx0dGhpcy5fY3Jvbk1hbmFnZXIuc3RvcEFsbCgpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGNoZWNrQ3JvbkpvYnNGb3JVcGRhdGVzKCkge1xuXHRcdGxldCBqb2JzID0gYXdhaXQgQ3JvbkpvYnMuZmluZCh7fSkuZXhlYygpO1xuXG5cdFx0Ly8gUmVtb3ZlIGRlbGV0ZWQgY3JvbiBqb2JzXG5cdFx0dGhpcy5fY3Jvbk1hbmFnZXIuZ2V0Sm9icygpLmZvckVhY2goY3JvbkpvYiA9PiB7XG5cdFx0XHRpZiAoam9icy5tYXAoYSA9PiBhLm5hbWUpLmluZGV4T2YoY3JvbkpvYikgPT09IC0xKSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlQ3JvbkpvYihjcm9uSm9iKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8vIEFkZCBuZXcgY3JvbiBqb2JzXG5cdFx0am9icy5mb3JFYWNoKGNyb25Kb2IgPT4ge1xuXHRcdFx0dGhpcy5hZGRDcm9uSm9iKGNyb25Kb2IpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gVXBkYXRlIGNyb25qb2JzXG5cdFx0am9icy5mb3JFYWNoKGNyb25Kb2IgPT4ge1xuXHRcdFx0dGhpcy51cGRhdGVDcm9uSm9iKGNyb25Kb2IpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBydW5Dcm9uSm9iKGNyb246IENyb25Kb2JNb2RlbCkge1xuXHRcdGxldCBub3cgPSBuZXcgRGF0ZSgpO1xuXG5cdFx0aWYgKCFjcm9uLm5leHRfcnVuIHx8IG5vdy5nZXRUaW1lKCkgPj0gY3Jvbi5uZXh0X3J1bi5nZXRUaW1lKCkpIHtcblx0XHRcdENyb25Kb2JzLmZpbmRPbmVBbmRVcGRhdGUoe1xuXHRcdFx0XHQkYW5kOiBbXG5cdFx0XHRcdFx0e19pZDogY3Jvbi5faWR9LFxuXHRcdFx0XHRcdHtydW5uaW5nOiBmYWxzZX1cblx0XHRcdFx0XVxuXHRcdFx0fSwgeyRzZXQ6IHtydW5uaW5nOiB0cnVlfX0pLmV4ZWMoYXN5bmMgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHRpZiAoY3Jvbi5tZXRob2RfcnVuX2RhdGEpIHtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMuX21haW5TZXJ2ZXIuZ2V0TWV0aG9kTWFuYWdlcigpLmNhbGxNZXRob2RDcm9uKGNyb24ubWV0aG9kX3J1biwgY3Jvbi5tZXRob2RfcnVuX2RhdGEpO1x0XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5fbWFpblNlcnZlci5nZXRNZXRob2RNYW5hZ2VyKCkuY2FsbE1ldGhvZENyb24oY3Jvbi5tZXRob2RfcnVuKTtcblx0XHRcdFx0XHR9XG5cdFxuXHRcdFx0XHRcdGlmIChjcm9uLm1ldGhvZF9jb21wbGV0ZSkge1xuXHRcdFx0XHRcdFx0aWYgKGNyb24ubWV0aG9kX2NvbXBsZXRlX2RhdGEpIHtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5fbWFpblNlcnZlci5nZXRNZXRob2RNYW5hZ2VyKCkuY2FsbE1ldGhvZENyb24oY3Jvbi5tZXRob2RfY29tcGxldGUsIGNyb24ubWV0aG9kX2NvbXBsZXRlX2RhdGEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMuX21haW5TZXJ2ZXIuZ2V0TWV0aG9kTWFuYWdlcigpLmNhbGxNZXRob2RDcm9uKGNyb24ubWV0aG9kX2NvbXBsZXRlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFxuXHRcdFx0XHRcdGlmIChjcm9uLnJlcGVhdCkge1xuXHRcdFx0XHRcdFx0Q3JvbkpvYnMudXBkYXRlT25lKHtcblx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdHtfaWQ6IGNyb24uX2lkfSxcblx0XHRcdFx0XHRcdFx0XHR7cnVubmluZzogdHJ1ZX1cblx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0fSwgeyRzZXQ6IHtydW5uaW5nOiBmYWxzZSwgbmV4dF9ydW46IHRoaXMuX2Nyb25NYW5hZ2VyLmdldEpvYihjcm9uLm5hbWUpLm5leHREYXRlcygpLnRvRGF0ZSgpfX0pLmV4ZWMoKTtcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Q3JvbkpvYnMuZGVsZXRlT25lKHtfaWQ6IGNyb24uX2lkfSkuZXhlYygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59Il19
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var collections_1=require("../methods/collections"),logs_1=require("../methods/logs"),counters_1=require("../methods/counters"),pdf_1=require("../methods/pdf"),aws_1=require("../methods/aws"),cloudconvert_1=require("../methods/cloudconvert"),path=require("path"),fs=require("fs"),nodemailer=require("nodemailer"),aws=require("aws-sdk"),accounts_1=require("../methods/accounts"),init_1=require("../fixtures/init"),cron_jobs_1=require("../fixtures/cron-jobs"),cron_jobs_2=require("../methods/cron-jobs"),flags_1=require("../methods/flags"),method_response_collection_1=require("../collections/method-response.collection"),mongoose_1=require("mongoose"),common_1=require("../util/common"),log_collection_1=require("../collections/log.collection"),MethodManager=function(){function e(e,o){var r=this;this._methods={},this._sendQueue=[],this._runningQueue=!1,this._mainServer=e,this.serverConfig=o,init_1.loadServerInit(),cron_jobs_1.loadServerCronJobs(),accounts_1.loadAccountMethods(this),aws_1.loadAWSMethods(this),cloudconvert_1.loadCloudConvertMethods(this),collections_1.loadCollectionMethods(this),counters_1.loadCounterMethods(this),logs_1.loadLogMethods(this),pdf_1.loadPDFMethods(this),cron_jobs_2.loadCronJobMethods(this),flags_1.loadFlagMethods(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))}),"countQuery"!==t.method&&"countCollectionWithQuery"!==t.method&&"find"!==t.method&&"findOne"!==t.method&&"findWithOptions"!==t.method&&"setWSAppVersion"!==t.method&&"uploadFileAndSave"!==t.method&&(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",message:"User: "+o.user+", MessageId: "+t.data.messageId+", 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",message:"User: "+o.user+", MessageId: "+t.data.messageId+", Method: "+t.method,payload:"Too Big",method:t.method,user:o.user,messageId:t.data.messageId})),method_response_collection_1.MethodResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,id_user:o.id_user,message_id:t.data.messageId,data:JSON.stringify(t.methodData),response:t.data,method:t.method})}}else r._sendQueue.splice(e,1)},o=r._sendQueue.length-1;0<=o;o--)e(o);r._runningQueue=!1}},50)}return e.prototype.getMainServer=function(){return this._mainServer},e.prototype.methods=function(e){this._methods=Object.assign(this._methods,e)},e.prototype.callMethodCron=function(o){for(var e,t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var s=this;if(!s._methods[o])return console.log("No Method: "+o),void s.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+s.serverConfig.CLIENT_NAME,"No Method: "+o);if((1<t.length||t[0])&&!s._methods[o].skipValidation){if(!s._methods[o].check)return console.error("No Check Function For Method "+o),void s.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+s.serverConfig.CLIENT_NAME,"No Check Function For Method "+o);if(!s._methods[o].check._schema)return console.error("No Check Schema For Method "+o),void s.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+s.serverConfig.CLIENT_NAME,"No Check Function For Method "+o);for(var n={},d=Object.keys(s._methods[o].check._schema).filter(function(e){return!e.includes(".")}),i=0;i<t.length;i++)n[d[i]]=t[i];try{s._methods[o].check.validate(n)}catch(e){if(e)return console.error("Error in Method Check ("+o+")",e),void s.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+s.serverConfig.CLIENT_NAME,"Match Error On Method "+o+"\n\nData Being Checked\n"+JSON.stringify(n,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2))}}(e=s._methods[o].function).call.apply(e,[Object.assign({},s,{id_user:"",user:"",id_ws:""})].concat(t))},e.prototype.callMethodQueue=function(t){var e,r=this,s=common_1.deepCopy(t),o=this;if(o._methods[t.method]){if((1<t.method_data.length||t.method_data[0])&&!o._methods[t.method].skipValidation){if(!o._methods[t.method].check){console.error("No Check Function For Method "+t.method),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"No Check Function For Method "+t.method);a={messageId:t.messageId,hasError:!0,data:"Internal Error"};return void this._mainServer.getQueueManager().addMethodResponse(s,a)}if(!o._methods[t.method].check._schema){console.error("No Check Schema For Method "+t.method),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"No Check Function For Method "+t.method);a={messageId:t.messageId,hasError:!0,data:"Internal Error"};return void this._mainServer.getQueueManager().addMethodResponse(s,a)}for(var n={},d=Object.keys(o._methods[t.method].check._schema).filter(function(e){return!e.includes(".")}),i=0;i<t.method_data.length;i++)n[d[i]]=t.method_data[i];try{o._methods[t.method].check.validate(n)}catch(e){if(e){console.error("Error in Method Check ("+t.method+")",e),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"Match Error On Method "+t.method+"\n\nData Being Checked\n"+JSON.stringify(n,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2));a={messageId:t.messageId,hasError:!0,data:"Internal Error"};return void this._mainServer.getQueueManager().addMethodResponse(s,a)}}}(e=o._methods[t.method].function).call.apply(e,[Object.assign({},o,{id_user:t.id_user,user:t.user,id_ws:t.id_ws})].concat(t.method_data)).then(function(e){var o={messageId:t.messageId,hasError:!1,data:e};r._mainServer.getQueueManager().addMethodResponse(s,o)},function(e){var o={messageId:t.messageId,hasError:!0,data:e};r._mainServer.getQueueManager().addMethodResponse(s,o)})}else{console.log("No Method: "+t.method),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"No Method: "+t.method);var a={messageId:t.messageId,hasError:!0,data:"Internal Error"};this._mainServer.getQueueManager().addMethodResponse(s,a)}},e.prototype.callMethod=function(t,r,s){for(var e,n=this,d=[],o=3;o<arguments.length;o++)d[o-3]=arguments[o];var i=this;if(i._methods[s]){if((1<d.length||d[0])&&!i._methods[s].skipValidation){if(!i._methods[s].check){console.error("No Check Function For Method "+s),i.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+i.serverConfig.CLIENT_NAME,"No Check Function For Method "+s);l={messageId:r,hasError:!0,data:"Internal Error"};return void this.sendWS(t,s,d,l)}if(!i._methods[s].check._schema){console.error("No Check Schema For Method "+s),i.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+i.serverConfig.CLIENT_NAME,"No Check Function For Method "+s);l={messageId:r,hasError:!0,data:"Internal Error"};return void this.sendWS(t,s,d,l)}for(var a={},c=Object.keys(i._methods[s].check._schema).filter(function(e){return!e.includes(".")}),h=0;h<d.length;h++)a[c[h]]=d[h];try{i._methods[s].check.validate(a)}catch(e){if(e){console.error("Error in Method Check ("+s+")",e),i.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+i.serverConfig.CLIENT_NAME,"Match Error On Method "+s+"\n\nData Being Checked\n"+JSON.stringify(a,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2));l={messageId:r,hasError:!0,data:"Internal Error"};return void this.sendWS(t,s,d,l)}}}(e=i._methods[s].function).call.apply(e,[Object.assign({},i,{id_user:t.id_user,user:t.user,id_ws:t.id_socket})].concat(d)).then(function(e){var o={messageId:r,hasError:!1,data:e};n.sendWS(t,s,d,o)},function(e){var o={messageId:r,hasError:!0,data:e};n.sendWS(t,s,d,o)})}else{console.log("No Method: "+s),i.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+i.serverConfig.CLIENT_NAME,"No Method: "+s);var l={messageId:r,hasError:!0,data:"Internal Error"};this.sendWS(t,s,d,l)}},e.prototype.callMethodInternal=function(e){for(var o,t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var s=this;if(s._methods[e]){if((1<t.length||t[0]&&"function"!=typeof t[0])&&!s._methods[e].skipValidation){if(!s._methods[e].check)return void console.error("No Check Function For Method "+e);if(!s._methods[e].check._schema)return void console.error("No Check Schema For Method "+e)}var n=(o=s._methods[e].function).call.apply(o,[s].concat(t));return t[t.length-1]&&"function"==typeof t[t.length-1]&&n.then(function(e){return t[t.length-1](null,e)},function(e){return t[t.length-1](e,null)}),n}console.log("No Method: "+e)},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.prototype.getAWS=function(){return this._aws},e.prototype.readFile=function(e){return new Promise(function(t,r){fs.readFile(path.join(__dirname,"../private/"+e),"utf-8",function(e,o){e?r(e):t(o)})})},e.prototype.readImage=function(e){return new Promise(function(t,r){fs.readFile(path.join(__dirname,"../private/"+e),"base64",function(e,o){e?r(e):t(o)})})},e}();exports.MethodManager=MethodManager;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var collections_1=require("../methods/collections"),logs_1=require("../methods/logs"),counters_1=require("../methods/counters"),pdf_1=require("../methods/pdf"),aws_1=require("../methods/aws"),cloudconvert_1=require("../methods/cloudconvert"),path=require("path"),fs=require("fs"),nodemailer=require("nodemailer"),aws=require("aws-sdk"),accounts_1=require("../methods/accounts"),init_1=require("../fixtures/init"),cron_jobs_1=require("../fixtures/cron-jobs"),cron_jobs_2=require("../methods/cron-jobs"),flags_1=require("../methods/flags"),method_response_collection_1=require("../collections/method-response.collection"),mongoose_1=require("mongoose"),common_1=require("../util/common"),log_collection_1=require("../collections/log.collection"),MethodManager=function(){function e(e,o){var r=this;this._methods={},this._sendQueue=[],this._runningQueue=!1,this._mainServer=e,this.serverConfig=o,init_1.loadServerInit(),cron_jobs_1.loadServerCronJobs(),accounts_1.loadAccountMethods(this),aws_1.loadAWSMethods(this),cloudconvert_1.loadCloudConvertMethods(this),collections_1.loadCollectionMethods(this),counters_1.loadCounterMethods(this),logs_1.loadLogMethods(this),pdf_1.loadPDFMethods(this),cron_jobs_2.loadCronJobMethods(this),flags_1.loadFlagMethods(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))}),"countQuery"!==t.method&&"countCollectionWithQuery"!==t.method&&"find"!==t.method&&"findOne"!==t.method&&"findWithOptions"!==t.method&&"setWSAppVersion"!==t.method&&"uploadFileAndSave"!==t.method&&(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",message:"User: "+o.user+", MessageId: "+t.data.messageId+", 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",message:"User: "+o.user+", MessageId: "+t.data.messageId+", Method: "+t.method,payload:"Too Big",method:t.method,user:o.user,messageId:t.data.messageId})),method_response_collection_1.MethodResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,id_user:o.id_user,message_id:t.data.messageId,data:JSON.stringify(t.methodData),response:t.data,method:t.method})}}else r._sendQueue.splice(e,1)},o=r._sendQueue.length-1;0<=o;o--)e(o);r._runningQueue=!1}},50)}return e.prototype.getMainServer=function(){return this._mainServer},e.prototype.methods=function(e){this._methods=Object.assign(this._methods,e)},e.prototype.callMethodCron=function(o){for(var e,t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var s=this;if(!s._methods[o])return console.log("No Method: "+o),void s.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+s.serverConfig.CLIENT_NAME,"No Method: "+o);if((1<t.length||t[0])&&!s._methods[o].skipValidation){if(!s._methods[o].check)return console.error("No Check Function For Method "+o),void s.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+s.serverConfig.CLIENT_NAME,"No Check Function For Method "+o);if(!s._methods[o].check._schema)return console.error("No Check Schema For Method "+o),void s.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+s.serverConfig.CLIENT_NAME,"No Check Function For Method "+o);for(var n={},d=Object.keys(s._methods[o].check._schema).filter(function(e){return!e.includes(".")}),i=0;i<t.length;i++)n[d[i]]=t[i];try{s._methods[o].check.validate(n)}catch(e){if(e)return console.error("Error in Method Check ("+o+")",e),void s.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+s.serverConfig.CLIENT_NAME,"Match Error On Method "+o+"\n\nData Being Checked\n"+JSON.stringify(n,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2))}}(e=s._methods[o].function).call.apply(e,[Object.assign({},s,{id_user:"",user:"",id_ws:""})].concat(t))},e.prototype.callMethodQueue=function(t){var e,r=this,s=common_1.deepCopy(t),o=this;if(o._methods[t.method]){if((1<t.method_data.length||t.method_data[0])&&!o._methods[t.method].skipValidation){if(!o._methods[t.method].check){console.error("No Check Function For Method "+t.method),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"No Check Function For Method "+t.method);a={messageId:t.messageId,hasError:!0,data:"Internal Error"};return void this._mainServer.getQueueManager().addMethodResponse(s,a)}if(!o._methods[t.method].check._schema){console.error("No Check Schema For Method "+t.method),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"No Check Function For Method "+t.method);a={messageId:t.messageId,hasError:!0,data:"Internal Error"};return void this._mainServer.getQueueManager().addMethodResponse(s,a)}for(var n={},d=Object.keys(o._methods[t.method].check._schema).filter(function(e){return!e.includes(".")}),i=0;i<t.method_data.length;i++)n[d[i]]=t.method_data[i];try{o._methods[t.method].check.validate(n)}catch(e){if(e){console.error("Error in Method Check ("+t.method+")",e),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"Match Error On Method "+t.method+"\n\nData Being Checked\n"+JSON.stringify(n,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2));a={messageId:t.messageId,hasError:!0,data:"Internal Error"};return void this._mainServer.getQueueManager().addMethodResponse(s,a)}}}(e=o._methods[t.method].function).call.apply(e,[Object.assign({},o,{id_user:t.id_user,user:t.user,id_ws:t.id_ws})].concat(t.method_data)).then(function(e){var o={messageId:t.messageId,hasError:!1,data:e};r._mainServer.getQueueManager().addMethodResponse(s,o)},function(e){var o={messageId:t.messageId,hasError:!0,data:e};r._mainServer.getQueueManager().addMethodResponse(s,o)})}else{console.log("No Method: "+t.method),o.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+o.serverConfig.CLIENT_NAME,"No Method: "+t.method);var a={messageId:t.messageId,hasError:!0,data:"Internal Error"};this._mainServer.getQueueManager().addMethodResponse(s,a)}},e.prototype.callMethod=function(t,r,s){for(var e,n=this,d=[],o=3;o<arguments.length;o++)d[o-3]=arguments[o];var i=this;if(i._methods[s]){if((1<d.length||d[0])&&!i._methods[s].skipValidation){if(!i._methods[s].check){console.error("No Check Function For Method "+s),i.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+i.serverConfig.CLIENT_NAME,"No Check Function For Method "+s);l={messageId:r,hasError:!0,data:"Internal Error"};return void this.sendWS(t,s,d,l)}if(!i._methods[s].check._schema){console.error("No Check Schema For Method "+s),i.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+i.serverConfig.CLIENT_NAME,"No Check Function For Method "+s);l={messageId:r,hasError:!0,data:"Internal Error"};return void this.sendWS(t,s,d,l)}for(var a={},c=Object.keys(i._methods[s].check._schema).filter(function(e){return!e.includes(".")}),h=0;h<d.length;h++)a[c[h]]=d[h];try{i._methods[s].check.validate(a)}catch(e){if(e){console.error("Error in Method Check ("+s+")",e),i.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+i.serverConfig.CLIENT_NAME,"Match Error On Method "+s+"\n\nData Being Checked\n"+JSON.stringify(a,null,2)+"\n\nErrors\n"+JSON.stringify(e,null,2));l={messageId:r,hasError:!0,data:"Internal Error"};return void this.sendWS(t,s,d,l)}}}(e=i._methods[s].function).call.apply(e,[Object.assign({},i,{id_user:t.id_user,user:t.user,id_ws:t.id_socket})].concat(d)).then(function(e){var o={messageId:r,hasError:!1,data:e};n.sendWS(t,s,d,o)},function(e){var o={messageId:r,hasError:!0,data:e};n.sendWS(t,s,d,o)})}else{console.log("No Method: "+s),i.sendEmail("dev@resolveio.com","SERVER - Error Detected - "+i.serverConfig.CLIENT_NAME,"No Method: "+s);var l={messageId:r,hasError:!0,data:"Internal Error"};this.sendWS(t,s,d,l)}},e.prototype.callMethodInternal=function(e){for(var o,t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var s=this;if(s._methods[e]){if((1<t.length||t[0]&&"function"!=typeof t[0])&&!s._methods[e].skipValidation){if(!s._methods[e].check)return void console.error("No Check Function For Method "+e);if(!s._methods[e].check._schema)return void console.error("No Check Schema For Method "+e)}var n=(o=s._methods[e].function).call.apply(o,[s].concat(t));return t[t.length-1]&&"function"==typeof t[t.length-1]&&n.then(function(e){return t[t.length-1](null,e)},function(e){return t[t.length-1](e,null)}),n}console.log("No Method: "+e)},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.prototype.getAWS=function(){return this._aws},e.prototype.readFile=function(e){return new Promise(function(t,r){fs.readFile(path.join(__dirname,"../private/"+e),"utf-8",function(e,o){e?r(e):t(o)})})},e.prototype.readImage=function(e){return new Promise(function(t,r){fs.readFile(path.join(__dirname,"../private/"+e),"base64",function(e,o){e?r(e):t(o)})})},e}();exports.MethodManager=MethodManager;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2Vycy9tZXRob2QubWFuYWdlci50cyJdLCJuYW1lcyI6WyJjb2xsZWN0aW9uc18xIiwicmVxdWlyZSIsImxvZ3NfMSIsImNvdW50ZXJzXzEiLCJwZGZfMSIsImF3c18xIiwiY2xvdWRjb252ZXJ0XzEiLCJwYXRoIiwiZnMiLCJub2RlbWFpbGVyIiwiYXdzIiwiYWNjb3VudHNfMSIsImluaXRfMSIsImNyb25fam9ic18xIiwiY3Jvbl9qb2JzXzIiLCJmbGFnc18xIiwibWV0aG9kX3Jlc3BvbnNlX2NvbGxlY3Rpb25fMSIsIm1vbmdvb3NlXzEiLCJjb21tb25fMSIsImxvZ19jb2xsZWN0aW9uXzEiLCJNZXRob2RNYW5hZ2VyIiwibWFpblNlcnZlciIsInNlcnZlckNvbmZpZyIsIl90aGlzIiwidGhpcyIsIl9tZXRob2RzIiwiX3NlbmRRdWV1ZSIsIl9ydW5uaW5nUXVldWUiLCJfbWFpblNlcnZlciIsImxvYWRTZXJ2ZXJJbml0IiwibG9hZFNlcnZlckNyb25Kb2JzIiwibG9hZEFjY291bnRNZXRob2RzIiwibG9hZEFXU01ldGhvZHMiLCJsb2FkQ2xvdWRDb252ZXJ0TWV0aG9kcyIsImxvYWRDb2xsZWN0aW9uTWV0aG9kcyIsImxvYWRDb3VudGVyTWV0aG9kcyIsImxvYWRMb2dNZXRob2RzIiwibG9hZFBERk1ldGhvZHMiLCJsb2FkQ3JvbkpvYk1ldGhvZHMiLCJsb2FkRmxhZ01ldGhvZHMiLCJfbWFpbGVyIiwiY3JlYXRlVHJhbnNwb3J0IiwiU0VTIiwiYXBpVmVyc2lvbiIsImFjY2Vzc0tleUlkIiwiQVdTQUNDRVNTS0VZSUQiLCJzZWNyZXRBY2Nlc3NLZXkiLCJBV1NTRUNSRVRBQ0NFU1NLRVkiLCJyZWdpb24iLCJBV1NTRVNfUkVHSU9OIiwiX2F3cyIsIlMzIiwiQVdTUkVHSU9OIiwic2V0SW50ZXJ2YWwiLCJsZW5ndGgiLCJpIiwid3MiLCJnZXRXUyIsImlkX3dzIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJidWZmZXJlZEFtb3VudCIsInNlbmRJdGVtIiwicG9wIiwic2VuZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhIiwiZXJyb3IiLCJjb25zb2xlIiwibG9nIiwidW5zdWJzY3JpYmVXUyIsIm1ldGhvZCIsImdldEJpbmFyeVNpemUiLCJtZXRob2REYXRhIiwiTG9ncyIsImNyZWF0ZSIsIl9pZCIsIlR5cGVzIiwiT2JqZWN0SWQiLCJ0b0hleFN0cmluZyIsImRhdGUiLCJEYXRlIiwidHlwZSIsInRpdGxlIiwibWVzc2FnZSIsIm1lc3NhZ2VJZCIsInBheWxvYWQiLCJ1c2VyIiwiTWV0aG9kUmVzcG9uc2VzIiwiX192IiwiaWRfdXNlciIsIm1lc3NhZ2VfaWQiLCJyZXNwb25zZSIsInNwbGljZSIsInByb3RvdHlwZSIsImdldE1haW5TZXJ2ZXIiLCJtZXRob2RzIiwiT2JqZWN0IiwiYXNzaWduIiwiY2FsbE1ldGhvZENyb24iLCJfaSIsImFyZ3VtZW50cyIsInRoYXQiLCJzZW5kRW1haWwiLCJza2lwVmFsaWRhdGlvbiIsImNoZWNrIiwiX3NjaGVtYSIsInZhbE9iaiIsInJvb3RLZXlzIiwia2V5cyIsImZpbHRlciIsImEiLCJpbmNsdWRlcyIsInZhbGlkYXRlIiwiZXJyb3JzIiwiX2EiLCJmdW5jdGlvbiIsImNhbGwiLCJhcHBseSIsImNvbmNhdCIsImNhbGxNZXRob2RRdWV1ZSIsInVwZGF0ZSIsInVwZGF0ZUNvcHkiLCJkZWVwQ29weSIsIm1ldGhvZF9kYXRhIiwic2VydmVyUmVzIiwiaGFzRXJyb3IiLCJnZXRRdWV1ZU1hbmFnZXIiLCJhZGRNZXRob2RSZXNwb25zZSIsInRoZW4iLCJyZXMiLCJlcnIiLCJjYWxsTWV0aG9kIiwic2VuZFdTIiwiY2FsbE1ldGhvZEludGVybmFsIiwicHJvbWlzZSIsInNlbmRUbyIsInN1YmplY3QiLCJ0ZXh0IiwiaHRtbCIsImF0dGFjaG1lbnRzIiwic2VuZE1haWwiLCJyZXBseVRvIiwidW5kZWZpbmVkIiwiZnJvbSIsIk1BSUxfRlJPTSIsInRvIiwiaW5mbyIsImdldEFXUyIsInJlYWRGaWxlIiwiZmlsZU5hbWUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJyZWFkSW1hZ2UiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoib0VBQ0EsSUFBQUEsY0FBQUMsUUFBQSwwQkFFQUMsT0FBQUQsUUFBQSxtQkFDQUUsV0FBQUYsUUFBQSx1QkFDQUcsTUFBQUgsUUFBQSxrQkFDQUksTUFBQUosUUFBQSxrQkFDQUssZUFBQUwsUUFBQSwyQkFDQU0sS0FBQU4sUUFBQSxRQUNBTyxHQUFBUCxRQUFBLE1BQ0FRLFdBQUFSLFFBQUEsY0FFQVMsSUFBQVQsUUFBQSxXQUNBVSxXQUFBVixRQUFBLHVCQUNBVyxPQUFBWCxRQUFBLG9CQUNBWSxZQUFBWixRQUFBLHlCQUNBYSxZQUFBYixRQUFBLHdCQUNBYyxRQUFBZCxRQUFBLG9CQUVBZSw2QkFBQWYsUUFBQSw2Q0FDQWdCLFdBQUFoQixRQUFBLFlBQ0FpQixTQUFBakIsUUFBQSxrQkFDQWtCLGlCQUFBbEIsUUFBQSxpQ0FHQW1CLGNBQUEsV0FZQyxTQUFBQSxFQUFZQyxFQUFZQyxHQUF4QixJQUFBQyxFQUFBQyxLQVRPQSxLQUFBQyxTQUF3QixHQU12QkQsS0FBQUUsV0FBYSxHQUNiRixLQUFBRyxlQUFnQixFQUd2QkgsS0FBS0ksWUFBY1AsRUFFbkJHLEtBQUtGLGFBQWVBLEVBR3BCVixPQUFBaUIsaUJBQ0FoQixZQUFBaUIscUJBR0FuQixXQUFBb0IsbUJBQW1CUCxNQUNuQm5CLE1BQUEyQixlQUFlUixNQUNmbEIsZUFBQTJCLHdCQUF3QlQsTUFDeEJ4QixjQUFBa0Msc0JBQXNCVixNQUN0QnJCLFdBQUFnQyxtQkFBbUJYLE1BQ25CdEIsT0FBQWtDLGVBQWVaLE1BQ2ZwQixNQUFBaUMsZUFBZWIsTUFDZlYsWUFBQXdCLG1CQUFtQmQsTUFDbkJULFFBQUF3QixnQkFBZ0JmLE1BRWhCQSxLQUFLZ0IsUUFBVS9CLFdBQVdnQyxnQkFBZ0IsQ0FDekNDLElBQUssSUFBSWhDLElBQUlnQyxJQUFJLENBQ2hCQyxXQUFZLGFB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QUNIc0IsRUFBT3RCLEdBR1BxQixFQUFRdEIsUUFLYi9HLEVBM2tCQSxHQUFhMEksUUFBQTFJLGNBQUFBIiwiZmlsZSI6Im1hbmFnZXJzL21ldGhvZC5tYW5hZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VydmVyUmVzcG9uc2VNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zZXJ2ZXItcmVzcG9uc2UubW9kZWwnO1xuaW1wb3J0IHsgbG9hZENvbGxlY3Rpb25NZXRob2RzIH0gZnJvbSAnLi4vbWV0aG9kcy9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBNZXRob2RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9tZXRob2QubW9kZWwnO1xuaW1wb3J0IHsgbG9hZExvZ01ldGhvZHMgfSBmcm9tICcuLi9tZXRob2RzL2xvZ3MnO1xuaW1wb3J0IHsgbG9hZENvdW50ZXJNZXRob2RzIH0gZnJvbSAnLi4vbWV0aG9kcy9jb3VudGVycyc7XG5pbXBvcnQgeyBsb2FkUERGTWV0aG9kcyB9IGZyb20gJy4uL21ldGhvZHMvcGRmJztcbmltcG9ydCB7IGxvYWRBV1NNZXRob2RzIH0gZnJvbSAnLi4vbWV0aG9kcy9hd3MnO1xuaW1wb3J0IHsgbG9hZENsb3VkQ29udmVydE1ldGhvZHMgfSBmcm9tICcuLi9tZXRob2RzL2Nsb3VkY29udmVydCc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgbm9kZW1haWxlciBmcm9tICdub2RlbWFpbGVyJztcbmltcG9ydCAqIGFzIGltYXAgZnJvbSAnaW1hcCc7XG5pbXBvcnQgKiBhcyBhd3MgZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgeyBsb2FkQWNjb3VudE1ldGhvZHMgfSBmcm9tICcuLi9tZXRob2RzL2FjY291bnRzJztcbmltcG9ydCB7IGxvYWRTZXJ2ZXJJbml0IH0gZnJvbSAnLi4vZml4dHVyZXMvaW5pdCc7XG5pbXBvcnQgeyBsb2FkU2VydmVyQ3JvbkpvYnMgfSBmcm9tICcuLi9maXh0dXJlcy9jcm9uLWpvYnMnO1xuaW1wb3J0IHsgbG9hZENyb25Kb2JNZXRob2RzIH0gZnJvbSAnLi4vbWV0aG9kcy9jcm9uLWpvYnMnO1xuaW1wb3J0IHsgbG9hZEZsYWdNZXRob2RzIH0gZnJvbSAnLi4vbWV0aG9kcy9mbGFncyc7XG5pbXBvcnQgeyBRdWV1ZU1ldGhvZE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3F1ZXVlLW1ldGhvZC5tb2RlbCc7XG5pbXBvcnQgeyBNZXRob2RSZXNwb25zZXMgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9tZXRob2QtcmVzcG9uc2UuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBUeXBlcyB9IGZyb20gJ21vbmdvb3NlJztcbmltcG9ydCB7IGRlZXBDb3B5LCBnZXRCaW5hcnlTaXplIH0gZnJvbSAnLi4vdXRpbC9jb21tb24nO1xuaW1wb3J0IHsgTG9ncyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2xvZy5jb2xsZWN0aW9uJztcbmltcG9ydCB7IFJlc29sdmVJT01haW5TZXJ2ZXIgfSBmcm9tICcuLi9zZXJ2ZXItYXBwJztcblxuZXhwb3J0IGNsYXNzIE1ldGhvZE1hbmFnZXIge1xuXG5cdHByaXZhdGUgX21haW5TZXJ2ZXI6IFJlc29sdmVJT01haW5TZXJ2ZXI7XG5cdHB1YmxpYyBfbWV0aG9kczogTWV0aG9kTW9kZWwgPSB7fTtcblx0cHJpdmF0ZSBfbWFpbGVyOiBub2RlbWFpbGVyLlRyYW5zcG9ydGVyO1xuXHRwcml2YXRlIF9pbWFwOiBpbWFwO1xuXHRwcml2YXRlIF9hd3M6IGF3cy5TMztcblx0cHJpdmF0ZSBzZXJ2ZXJDb25maWc7XG5cblx0cHJpdmF0ZSBfc2VuZFF1ZXVlID0gW107XG5cdHByaXZhdGUgX3J1bm5pbmdRdWV1ZSA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKG1haW5TZXJ2ZXIsIHNlcnZlckNvbmZpZykge1xuXHRcdHRoaXMuX21haW5TZXJ2ZXIgPSBtYWluU2VydmVyO1xuXG5cdFx0dGhpcy5zZXJ2ZXJDb25maWcgPSBzZXJ2ZXJDb25maWc7XG5cblx0XHQvLyBGaXh0dXJlc1xuXHRcdGxvYWRTZXJ2ZXJJbml0KCk7XG5cdFx0bG9hZFNlcnZlckNyb25Kb2JzKCk7XG5cblx0XHQvLyBNZXRob2RzXG5cdFx0bG9hZEFjY291bnRNZXRob2RzKHRoaXMpO1xuXHRcdGxvYWRBV1NNZXRob2RzKHRoaXMpO1xuXHRcdGxvYWRDbG91ZENvbnZlcnRNZXRob2RzKHRoaXMpO1xuXHRcdGxvYWRDb2xsZWN0aW9uTWV0aG9kcyh0aGlzKTtcblx0XHRsb2FkQ291bnRlck1ldGhvZHModGhpcyk7XG5cdFx0bG9hZExvZ01ldGhvZHModGhpcyk7XG5cdFx0bG9hZFBERk1ldGhvZHModGhpcyk7XG5cdFx0bG9hZENyb25Kb2JNZXRob2RzKHRoaXMpO1xuXHRcdGxvYWRGbGFnTWV0aG9kcyh0aGlzKTtcblxuXHRcdHRoaXMuX21haWxlciA9IG5vZGVtYWlsZXIuY3JlYXRlVHJhbnNwb3J0KHtcblx0XHRcdFNFUzogbmV3IGF3cy5TRVMoe1xuXHRcdFx0XHRhcGlWZXJzaW9uOiAnMjAxMC0xMi0wMScsXG5cdFx0XHRcdGFjY2Vzc0tleUlkOiBzZXJ2ZXJDb25maWcuQVdTQUNDRVNTS0VZSUQsXG5cdFx0XHRcdHNlY3JldEFjY2Vzc0tleTogc2VydmVyQ29uZmlnLkFXU1NFQ1JFVEFDQ0VTU0tFWSxcblx0XHRcdFx0cmVnaW9uOiBzZXJ2ZXJDb25maWcuQVdTU0VTX1JFR0lPTlxuXHRcdFx0fSlcblx0XHR9KTtcblxuXHRcdC8vIHRoaXMuX2ltYXAgPSBuZXcgaW1hcCh7XG5cdFx0Ly8gXHR1c2VyOiB0aGlzLnNlcnZlckNvbmZpZ1snT1JERVJTX0VNQUlMJ10sXG5cdFx0Ly8gXHRwYXNzd29yZDogdGhpcy5zZXJ2ZXJDb25maWdbJ09SREVSU19QQVNTV09SRCddLFxuXHRcdC8vIFx0aG9zdDogdGhpcy5zZXJ2ZXJDb25maWdbJ09SREVSU19IT1NUJ10sXG5cdFx0Ly8gXHRwb3J0OiB0aGlzLnNlcnZlckNvbmZpZ1snT1JERVJTX1BPUlQnXSxcblx0XHQvLyBcdHRsczogdGhpcy5zZXJ2ZXJDb25maWdbJ09SREVSU19UTFMnXVxuXHRcdC8vIH0pO1xuXG5cdFx0Ly8gbGV0IHRoYXQgPSB0aGlzO1xuXG5cdFx0Ly8gbGV0IGNoZW1pY2FsTmFtZXMgPSBhd2FpdCBDaGVtaWNhbHMuZmluZCh7fSkuc2VsZWN0KCdkZXNjcmlwdGlvbicpLmV4ZWMoKTtcblx0XHQvLyBsZXQgam9iTmFtZXMgPSBhd2FpdCBKb2JzLmZpbmQoe3N0YXR1czogJ0FjdGl2ZSd9KS5zZWxlY3QoJ3dlbGwnKS5leGVjKCk7XG5cblx0XHQvLyBjb25zb2xlLmxvZyhqb2JOYW1lcy5tYXAoYSA9PiBhLndlbGwpKTtcblxuXHRcdC8vIHRoaXMuX2ltYXAub25jZSgncmVhZHknLCAoKSA9PiB7XG5cdFx0Ly8gXHR0aGlzLl9pbWFwLm9wZW5Cb3goJ0lOQk9YJywgdHJ1ZSwgZnVuY3Rpb24oZXJyLCBib3gpIHtcblx0XHQvLyBcdFx0aWYgKGVycikge1xuXHRcdC8vIFx0XHRcdHRocm93IGVycjtcblx0XHQvLyBcdFx0fVxuXG5cdFx0Ly8gXHRcdHRoYXQuX2ltYXAuc2VhcmNoKFsgJ05FVycgXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG5cblx0XHQvLyBcdFx0XHRjb25zb2xlLmxvZyhlcnIsIHJlc3VsdHMpO1xuXG5cdFx0Ly8gXHRcdFx0aWYgKGVyciB8fCAhcmVzdWx0cy5sZW5ndGgpIHtcblx0XHQvLyBcdFx0XHRcdHJldHVybiB0aGF0Ll9pbWFwLmVuZCgpO1xuXHRcdC8vIFx0XHRcdH1cblxuXHRcdC8vIFx0XHRcdGxldCBmID0gdGhhdC5faW1hcC5mZXRjaChyZXN1bHRzWzBdLCB7IGJvZGllczogWydIRUFERVIuRklFTERTIChGUk9NKScsICdURVhUJ10gfSk7XG5cdFx0Ly8gXHRcdFx0Zi5vbignbWVzc2FnZScsIGZ1bmN0aW9uKG1zZywgc2Vxbm8pIHtcblx0XHQvLyBcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdNZXNzYWdlICMlZCcsIHNlcW5vKTtcblx0XHQvLyBcdFx0XHRcdGxldCBwcmVmaXggPSAnKCMnICsgc2Vxbm8gKyAnKSAnO1xuXHRcdC8vIFx0XHRcdFx0bXNnLm9uKCdib2R5JywgZnVuY3Rpb24oc3RyZWFtLCBpbmZvKSB7XG5cdFx0Ly8gXHRcdFx0XHRcdGxldCBidWZmZXIgPSAnJywgY291bnQgPSAwO1xuXHRcdC8vIFx0XHRcdFx0XHRzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbihjaHVuaykge1xuXHRcdC8vIFx0XHRcdFx0XHRcdGNvdW50ICs9IGNodW5rLmxlbmd0aDtcblx0XHQvLyBcdFx0XHRcdFx0XHRidWZmZXIgKz0gY2h1bmsudG9TdHJpbmcoJ3V0ZjgnKTtcblx0XHQvLyBcdFx0XHRcdFx0fSk7XG5cdFx0Ly8gXHRcdFx0XHRcdHN0cmVhbS5vbmNlKCdlbmQnLCBmdW5jdGlvbigpIHtcblx0XHQvLyBcdFx0XHRcdFx0XHRpZiAoaW5mby53aGljaCA9PT0gJ1RFWFQnKSB7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhidWZmZXIpO1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2codHlwZW9mKGJ1ZmZlcikpO1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0bGV0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXHJcXG4nKTtcblx0XHQvLyBcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGxpbmVzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBsZXQgaSA9IDA7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBsaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xuXG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdGxldCBkYXRlOiBEYXRlO1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRsZXQgZGF0ZVN0cmluZztcblxuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRpZiAobGluZS5pbmNsdWRlcygnRnJvbScpKSB7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0Y29uc29sZS5sb2cobGluZSk7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdH1cblx0XHQvLyBcdFx0XHRcdFx0XHRcdC8vIFx0aWYgKCFsaW5lLmluY2x1ZGVzKCdjbGFzcz0zRCcpICYmICFsaW5lLmluY2x1ZGVzKCdzdHlsZT0zRCcpKSB7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0aWYgKGxpbmUuaW5jbHVkZXMoJ1dlbGwnKSB8fCBsaW5lLmluY2x1ZGVzKCdXZWxsIE5hbWUnKSB8fCBsaW5lLmluY2x1ZGVzKCdKb2InKSB8fCBsaW5lLmluY2x1ZGVzKCdQYWQnKSkge1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRcdFx0bGV0IGJlc3QgPSBzdHJpbmdTaW1pbGFyaXR5LmZpbmRCZXN0TWF0Y2gobGluZSwgam9iTmFtZXMubWFwKGEgPT4gYS53ZWxsKSkuYmVzdE1hdGNoO1xuXHRcblx0XHQvLyBcdFx0XHRcdFx0XHRcdC8vIFx0XHRcdGlmIChiZXN0ICYmIGJlc3QucmF0aW5nID4gMC41KSB7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0XHRcdGNvbnNvbGUubG9nKCdXZWxsJywgbGluZSk7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0XHR9XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0fVxuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRcdGlmIChsaW5lLmluY2x1ZGVzKCdQcm9kdWN0JykgfHwgbGluZS5pbmNsdWRlcygnQ2hlbWljYWwnKSkge1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRcdFx0bGV0IGJlc3QgPSBzdHJpbmdTaW1pbGFyaXR5LmZpbmRCZXN0TWF0Y2gobGluZSwgY2hlbWljYWxOYW1lcy5tYXAoYSA9PiBhLmRlc2NyaXB0aW9uKSkuYmVzdE1hdGNoO1xuXHRcblx0XHQvLyBcdFx0XHRcdFx0XHRcdC8vIFx0XHRcdGlmIChiZXN0ICYmIGJlc3QucmF0aW5nID4gMC41KSB7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0XHRcdGNvbnNvbGUubG9nKCdDaGVtaWNhbCcsIGxpbmUpO1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRcdFx0fVxuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRcdH1cblx0XHQvLyBcdFx0XHRcdFx0XHRcdC8vIFx0XHRpZiAobGluZS5pbmNsdWRlcygnUXVhbnRpdHknKSB8fCBsaW5lLmluY2x1ZGVzKCdRdHknKSB8fCBsaW5lLmluY2x1ZGVzKCdBbW91bnQnKSkge1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRcdFx0Y29uc29sZS5sb2coJ1F0eScsIGxpbmUpO1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRcdH1cblx0XHQvLyBcdFx0XHRcdFx0XHRcdC8vIFx0XHRpZiAobGluZS5pbmNsdWRlcygnRGF0ZScpKSB7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0XHRjb25zb2xlLmxvZygnRGF0ZScsIGxpbmUpO1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRcdFx0Y29uc29sZS5sb2cobW9tZW50KERhdGUucGFyc2UobGluZSkpKTtcblx0XHQvLyBcdFx0XHRcdFx0XHRcdC8vIFx0XHRcdGRhdGUgPSBtb21lbnQoRGF0ZS5wYXJzZShsaW5lKSkudG9EYXRlKCk7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0XHRkYXRlU3RyaW5nID0gbGluZTtcblx0XHQvLyBcdFx0XHRcdFx0XHRcdC8vIFx0XHR9XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0aWYgKGxpbmUuaW5jbHVkZXMoJ1RpbWUnKSkge1xuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHRcdFx0Y29uc29sZS5sb2coJ1RpbWUnLCBsaW5lKTtcblx0XHQvLyBcdFx0XHRcdFx0XHRcdC8vIFx0XHRcdGNvbnNvbGUubG9nKG1vbWVudChEYXRlLnBhcnNlKGxpbmUpKSk7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0XHRjb25zb2xlLmxvZyhtb21lbnQoZGF0ZS5zZXRUaW1lKERhdGUucGFyc2UobGluZSkpKSk7XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyBcdFx0fVxuXHRcdC8vIFx0XHRcdFx0XHRcdFx0Ly8gXHR9XG5cdFx0Ly8gXHRcdFx0XHRcdFx0XHQvLyB9KTtcblx0XHQvLyBcdFx0XHRcdFx0XHR9XG5cdFx0Ly8gXHRcdFx0XHRcdH0pO1xuXHRcdC8vIFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XG5cdFx0Ly8gXHRcdFx0XHRtc2cub25jZSgnYXR0cmlidXRlcycsIGZ1bmN0aW9uKGF0dHJzKSB7XG5cdFx0Ly8gXHRcdFx0XHRcdGNvbnNvbGUubG9nKHByZWZpeCArICdBdHRyaWJ1dGVzOiAlcycsIGluc3BlY3QoYXR0cnMsIGZhbHNlLCA4KSk7XG5cdFx0Ly8gXHRcdFx0XHR9KTtcblxuXHRcdC8vIFx0XHRcdFx0bXNnLm9uY2UoJ2VuZCcsIGZ1bmN0aW9uKCkge1xuXHRcdC8vIFx0XHRcdFx0XHRjb25zb2xlLmxvZyhwcmVmaXggKyAnRmluaXNoZWQnKTtcblx0XHQvLyBcdFx0XHRcdH0pO1xuXHRcdC8vIFx0XHRcdH0pO1xuXHRcdFx0XHRcdFxuXHRcdC8vIFx0XHRcdGYub25jZSgnZXJyb3InLCBmdW5jdGlvbihlcnJvcikge1xuXHRcdC8vIFx0XHRcdFx0Y29uc29sZS5sb2coJ0ZldGNoIGVycm9yOiAnICsgZXJyb3IpO1xuXHRcdC8vIFx0XHRcdH0pO1xuXG5cdFx0Ly8gXHRcdFx0Zi5vbmNlKCdlbmQnLCBmdW5jdGlvbigpIHtcblx0XHQvLyBcdFx0XHRcdGNvbnNvbGUubG9nKCdEb25lIGZldGNoaW5nIGFsbCBtZXNzYWdlcyEnKTtcblx0XHQvLyBcdFx0XHRcdHRoYXQuX2ltYXAuZW5kKCk7XG5cdFx0Ly8gXHRcdFx0fSk7XG5cdFx0Ly8gXHRcdH0pO1xuXHRcdC8vIFx0fSk7XG5cdFx0Ly8gfSk7XG5cblx0XHQvLyB0aGlzLl9pbWFwLmNvbm5lY3QoKTtcblxuXHRcdHRoaXMuX2F3cyA9IG5ldyBhd3MuUzMoe1xuXHRcdFx0YWNjZXNzS2V5SWQ6IHNlcnZlckNvbmZpZy5BV1NBQ0NFU1NLRVlJRCxcblx0XHRcdHNlY3JldEFjY2Vzc0tleTogc2VydmVyQ29uZmlnLkFXU1NFQ1JFVEFDQ0VTU0tFWSxcblx0XHRcdHJlZ2lvbjogc2VydmVyQ29uZmlnLkFXU1JFR0lPTlxuXHRcdH0pO1xuXG5cdFx0c2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLl9ydW5uaW5nUXVldWUpIHtcblx0XHRcdFx0aWYgKHRoaXMuX3NlbmRRdWV1ZS5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLl9ydW5uaW5nUXVldWUgPSB0cnVlO1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSB0aGlzLl9zZW5kUXVldWUubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdFx0XHRcdGxldCB3cyA9IHRoaXMuX21haW5TZXJ2ZXIuZ2V0V1ModGhpcy5fc2VuZFF1ZXVlW2ldLmlkX3dzKTtcblx0XHRcdFx0XHRcdGlmICh3cyAmJiB3cy5yZWFkeVN0YXRlID09PSB3cy5PUEVOKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh3cy5idWZmZXJlZEFtb3VudCA8IDIwNDgwKSB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHNlbmRJdGVtID0gdGhpcy5fc2VuZFF1ZXVlLnBvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdHdzLnNlbmQoSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0uZGF0YSksIChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFcnJvciBvbiBXUzogJywgZXJyb3IpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLl9tYWluU2VydmVyLnVuc3Vic2NyaWJlV1Mod3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNlbmRJdGVtLm1ldGhvZCAhPT0gJ2NvdW50UXVlcnknICYmIHNlbmRJdGVtLm1ldGhvZCAhPT0gJ2NvdW50Q29sbGVjdGlvbldpdGhRdWVyeScgJiYgc2VuZEl0ZW0ubWV0aG9kICE9PSAnZmluZCcgJiYgc2VuZEl0ZW0ubWV0aG9kICE9PSAnZmluZE9uZScgJiYgc2VuZEl0ZW0ubWV0aG9kICE9PSAnZmluZFdpdGhPcHRpb25zJyAmJiBzZW5kSXRlbS5tZXRob2QgIT09ICdzZXRXU0FwcFZlcnNpb24nICYmIHNlbmRJdGVtLm1ldGhvZCAhPT0gJ3VwbG9hZEZpbGVBbmRTYXZlJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0ubWV0aG9kRGF0YSkpIDwgMjAwMDAwICYmIGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0uZGF0YSkpIDwgMjAwMDAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdjbGllbnQtcmVzcG9uc2UnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAnQ2xpZW50IFJlc3BvbnNlJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlOiAnVXNlcjogJyArIHdzWyd1c2VyJ10gKyAnLCBNZXNzYWdlSWQ6ICcgKyBzZW5kSXRlbS5kYXRhLm1lc3NhZ2VJZCArICcsIE1ldGhvZDogJyArIHNlbmRJdGVtLm1ldGhvZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXlsb2FkOiBbSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0ubWV0aG9kRGF0YSksIHNlbmRJdGVtLmRhdGFdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogc2VuZEl0ZW0ubWV0aG9kLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IHdzWyd1c2VyJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiBzZW5kSXRlbS5kYXRhLm1lc3NhZ2VJZFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnY2xpZW50LXJlc3BvbnNlJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ0NsaWVudCBSZXNwb25zZScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB3c1sndXNlciddICsgJywgTWVzc2FnZUlkOiAnICsgc2VuZEl0ZW0uZGF0YS5tZXNzYWdlSWQgKyAnLCBNZXRob2Q6ICcgKyBzZW5kSXRlbS5tZXRob2QsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGF5bG9hZDogJ1RvbyBCaWcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogc2VuZEl0ZW0ubWV0aG9kLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IHdzWyd1c2VyJ10sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiBzZW5kSXRlbS5kYXRhLm1lc3NhZ2VJZFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRNZXRob2RSZXNwb25zZXMuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0XHRcdFx0X192OiAwLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWRfdXNlcjogd3NbJ2lkX3VzZXInXSxcblx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2VfaWQ6IHNlbmRJdGVtLmRhdGEubWVzc2FnZUlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YTogSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0ubWV0aG9kRGF0YSksXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXNwb25zZTogc2VuZEl0ZW0uZGF0YSxcblx0XHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogc2VuZEl0ZW0ubWV0aG9kXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9zZW5kUXVldWUuc3BsaWNlKGksIDEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMuX3J1bm5pbmdRdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSwgNTApO1xuXHR9XG5cblx0cHVibGljIGdldE1haW5TZXJ2ZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX21haW5TZXJ2ZXI7XG5cdH1cblxuXHQvLyBBZGQgbWV0aG9kcyB0byBwcml2YXRlIG1ldGhvZHMgb2JqZWN0XG5cdHB1YmxpYyBtZXRob2RzKG1ldGhvZDogTWV0aG9kTW9kZWwpIHtcblx0XHR0aGlzLl9tZXRob2RzID0gT2JqZWN0LmFzc2lnbih0aGlzLl9tZXRob2RzLCBtZXRob2QpO1xuXHR9XG5cblx0cHVibGljIGNhbGxNZXRob2RDcm9uKG1ldGhvZDogc3RyaW5nLCAuLi5tZXRob2REYXRhOiBhbnlbXSkge1xuXHRcdGxldCB0aGF0ID0gdGhpcztcblxuXHRcdGlmICghdGhhdC5fbWV0aG9kc1ttZXRob2RdKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnTm8gTWV0aG9kOiAnICsgbWV0aG9kKTtcblxuXHRcdFx0dGhhdC5zZW5kRW1haWwoJ2RldkByZXNvbHZlaW8uY29tJywgJ1NFUlZFUiAtIEVycm9yIERldGVjdGVkIC0gJyArIHRoYXQuc2VydmVyQ29uZmlnWydDTElFTlRfTkFNRSddLCAnTm8gTWV0aG9kOiAnICsgbWV0aG9kKTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRcblx0XHRpZiAoKG1ldGhvZERhdGEubGVuZ3RoID4gMSB8fCBtZXRob2REYXRhWzBdKSAmJiAhdGhhdC5fbWV0aG9kc1ttZXRob2RdLnNraXBWYWxpZGF0aW9uKSB7XG5cdFx0XHRpZiAoIXRoYXQuX21ldGhvZHNbbWV0aG9kXS5jaGVjaykge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdObyBDaGVjayBGdW5jdGlvbiBGb3IgTWV0aG9kICcgKyBtZXRob2QpO1xuXG5cdFx0XHRcdHRoYXQuc2VuZEVtYWlsKCdkZXZAcmVzb2x2ZWlvLmNvbScsICdTRVJWRVIgLSBFcnJvciBEZXRlY3RlZCAtICcgKyB0aGF0LnNlcnZlckNvbmZpZ1snQ0xJRU5UX05BTUUnXSwgJ05vIENoZWNrIEZ1bmN0aW9uIEZvciBNZXRob2QgJyArIG1ldGhvZCk7XG5cdFxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmICghdGhhdC5fbWV0aG9kc1ttZXRob2RdLmNoZWNrLl9zY2hlbWEpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcignTm8gQ2hlY2sgU2NoZW1hIEZvciBNZXRob2QgJyArIG1ldGhvZCk7XG5cblx0XHRcdFx0dGhhdC5zZW5kRW1haWwoJ2RldkByZXNvbHZlaW8uY29tJywgJ1NFUlZFUiAtIEVycm9yIERldGVjdGVkIC0gJyArIHRoYXQuc2VydmVyQ29uZmlnWydDTElFTlRfTkFNRSddLCAnTm8gQ2hlY2sgRnVuY3Rpb24gRm9yIE1ldGhvZCAnICsgbWV0aG9kKTtcblx0XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRsZXQgdmFsT2JqID0ge307XG5cdFx0XHRcdGxldCB2YWxLZXlzID0gT2JqZWN0LmtleXModGhhdC5fbWV0aG9kc1ttZXRob2RdLmNoZWNrLl9zY2hlbWEpO1xuXG5cdFx0XHRcdGxldCByb290S2V5cyA9IHZhbEtleXMuZmlsdGVyKGEgPT4gIWEuaW5jbHVkZXMoJy4nKSk7XG5cdFx0XHRcdFxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG1ldGhvZERhdGEubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YWxPYmpbcm9vdEtleXNbaV1dID0gbWV0aG9kRGF0YVtpXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dGhhdC5fbWV0aG9kc1ttZXRob2RdLmNoZWNrLnZhbGlkYXRlKHZhbE9iaik7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2F0Y2ggKGVycm9ycykge1xuXHRcdFx0XHRcdGlmIChlcnJvcnMpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIE1ldGhvZCBDaGVjayAoJyArIG1ldGhvZCArICcpJywgZXJyb3JzKTtcblxuXHRcdFx0XHRcdFx0dGhhdC5zZW5kRW1haWwoJ2RldkByZXNvbHZlaW8uY29tJywgJ1NFUlZFUiAtIEVycm9yIERldGVjdGVkIC0gJyArIHRoYXQuc2VydmVyQ29uZmlnWydDTElFTlRfTkFNRSddLCAnTWF0Y2ggRXJyb3IgT24gTWV0aG9kICcgKyBtZXRob2QgKyAnXFxuXFxuRGF0YSBCZWluZyBDaGVja2VkXFxuJyArIEpTT04uc3RyaW5naWZ5KHZhbE9iaiwgbnVsbCwgMikgKyAnXFxuXFxuRXJyb3JzXFxuJyArIEpTT04uc3RyaW5naWZ5KGVycm9ycywgbnVsbCwgMikpO1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHRcdHRoYXQuX21ldGhvZHNbbWV0aG9kXS5mdW5jdGlvbi5jYWxsKE9iamVjdC5hc3NpZ24oe30sIHRoYXQsIHtpZF91c2VyOiAnJywgdXNlcjogJycsIGlkX3dzOiAnJ30pLCAuLi5tZXRob2REYXRhKTtcblx0fVxuXG5cdHB1YmxpYyBjYWxsTWV0aG9kUXVldWUodXBkYXRlOiBRdWV1ZU1ldGhvZE1vZGVsKSB7XG5cdFx0Ly8gY29uc29sZS5sb2coJ0NhbGwgTWV0aG9kIFF1ZXVlJywgdXBkYXRlKTtcblxuXHRcdGxldCB1cGRhdGVDb3B5ID0gZGVlcENvcHkodXBkYXRlKTtcblx0XHRcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHRpZiAoIXRoYXQuX21ldGhvZHNbdXBkYXRlLm1ldGhvZF0pIHtcblx0XHRcdGNvbnNvbGUubG9nKCdObyBNZXRob2Q6ICcgKyB1cGRhdGUubWV0aG9kKTtcblxuXHRcdFx0dGhhdC5zZW5kRW1haWwoJ2RldkByZXNvbHZlaW8uY29tJywgJ1NFUlZFUiAtIEVycm9yIERldGVjdGVkIC0gJyArIHRoYXQuc2VydmVyQ29uZmlnWydDTElFTlRfTkFNRSddLCAnTm8gTWV0aG9kOiAnICsgdXBkYXRlLm1ldGhvZCk7XG5cdFx0XHRcblx0XHRcdGxldCBzZXJ2ZXJSZXM6IFNlcnZlclJlc3BvbnNlTW9kZWwgPSB7XG5cdFx0XHRcdG1lc3NhZ2VJZDogdXBkYXRlLm1lc3NhZ2VJZCxcblx0XHRcdFx0aGFzRXJyb3I6IHRydWUsXG5cdFx0XHRcdGRhdGE6ICdJbnRlcm5hbCBFcnJvcidcblx0XHRcdH07XG5cblx0XHRcdHRoaXMuX21haW5TZXJ2ZXIuZ2V0UXVldWVNYW5hZ2VyKCkuYWRkTWV0aG9kUmVzcG9uc2UodXBkYXRlQ29weSwgc2VydmVyUmVzKTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICgodXBkYXRlLm1ldGhvZF9kYXRhLmxlbmd0aCA+IDEgfHwgdXBkYXRlLm1ldGhvZF9kYXRhWzBdKSAmJiAhdGhhdC5fbWV0aG9kc1t1cGRhdGUubWV0aG9kXS5za2lwVmFsaWRhdGlvbikge1xuXHRcdFx0aWYgKCF0aGF0Ll9tZXRob2RzW3VwZGF0ZS5tZXRob2RdLmNoZWNrKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ05vIENoZWNrIEZ1bmN0aW9uIEZvciBNZXRob2QgJyArIHVwZGF0ZS5tZXRob2QpO1xuXG5cdFx0XHRcdHRoYXQuc2VuZEVtYWlsKCdkZXZAcmVzb2x2ZWlvLmNvbScsICdTRVJWRVIgLSBFcnJvciBEZXRlY3RlZCAtICcgKyB0aGF0LnNlcnZlckNvbmZpZ1snQ0xJRU5UX05BTUUnXSwgJ05vIENoZWNrIEZ1bmN0aW9uIEZvciBNZXRob2QgJyArIHVwZGF0ZS5tZXRob2QpO1xuXHRcdFx0XHRcblx0XHRcdFx0bGV0IHNlcnZlclJlczogU2VydmVyUmVzcG9uc2VNb2RlbCA9IHtcblx0XHRcdFx0XHRtZXNzYWdlSWQ6IHVwZGF0ZS5tZXNzYWdlSWQsXG5cdFx0XHRcdFx0aGFzRXJyb3I6IHRydWUsXG5cdFx0XHRcdFx0ZGF0YTogJ0ludGVybmFsIEVycm9yJ1xuXHRcdFx0XHR9O1xuXHRcblx0XHRcdFx0dGhpcy5fbWFpblNlcnZlci5nZXRRdWV1ZU1hbmFnZXIoKS5hZGRNZXRob2RSZXNwb25zZSh1cGRhdGVDb3B5LCBzZXJ2ZXJSZXMpO1xuXHRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAoIXRoYXQuX21ldGhvZHNbdXBkYXRlLm1ldGhvZF0uY2hlY2suX3NjaGVtYSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdObyBDaGVjayBTY2hlbWEgRm9yIE1ldGhvZCAnICsgdXBkYXRlLm1ldGhvZCk7XG5cblx0XHRcdFx0dGhhdC5zZW5kRW1haWwoJ2RldkByZXNvbHZlaW8uY29tJywgJ1NFUlZFUiAtIEVycm9yIERldGVjdGVkIC0gJyArIHRoYXQuc2VydmVyQ29uZmlnWydDTElFTlRfTkFNRSddLCAnTm8gQ2hlY2sgRnVuY3Rpb24gRm9yIE1ldGhvZCAnICsgdXBkYXRlLm1ldGhvZCk7XG5cdFx0XHRcdFxuXHRcdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRcdG1lc3NhZ2VJZDogdXBkYXRlLm1lc3NhZ2VJZCxcblx0XHRcdFx0XHRoYXNFcnJvcjogdHJ1ZSxcblx0XHRcdFx0XHRkYXRhOiAnSW50ZXJuYWwgRXJyb3InXG5cdFx0XHRcdH07XG5cdFxuXHRcdFx0XHR0aGlzLl9tYWluU2VydmVyLmdldFF1ZXVlTWFuYWdlcigpLmFkZE1ldGhvZFJlc3BvbnNlKHVwZGF0ZUNvcHksIHNlcnZlclJlcyk7XG5cdFxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0bGV0IHZhbE9iaiA9IHt9O1xuXHRcdFx0XHRsZXQgdmFsS2V5cyA9IE9iamVjdC5rZXlzKHRoYXQuX21ldGhvZHNbdXBkYXRlLm1ldGhvZF0uY2hlY2suX3NjaGVtYSk7XG5cblx0XHRcdFx0bGV0IHJvb3RLZXlzID0gdmFsS2V5cy5maWx0ZXIoYSA9PiAhYS5pbmNsdWRlcygnLicpKTtcblx0XHRcdFx0XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdXBkYXRlLm1ldGhvZF9kYXRhLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFsT2JqW3Jvb3RLZXlzW2ldXSA9IHVwZGF0ZS5tZXRob2RfZGF0YVtpXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dGhhdC5fbWV0aG9kc1t1cGRhdGUubWV0aG9kXS5jaGVjay52YWxpZGF0ZSh2YWxPYmopO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNhdGNoIChlcnJvcnMpIHtcblx0XHRcdFx0XHRpZiAoZXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBpbiBNZXRob2QgQ2hlY2sgKCcgKyB1cGRhdGUubWV0aG9kICsgJyknLCBlcnJvcnMpO1xuXG5cdFx0XHRcdFx0XHR0aGF0LnNlbmRFbWFpbCgnZGV2QHJlc29sdmVpby5jb20nLCAnU0VSVkVSIC0gRXJyb3IgRGV0ZWN0ZWQgLSAnICsgdGhhdC5zZXJ2ZXJDb25maWdbJ0NMSUVOVF9OQU1FJ10sICdNYXRjaCBFcnJvciBPbiBNZXRob2QgJyArIHVwZGF0ZS5tZXRob2QgKyAnXFxuXFxuRGF0YSBCZWluZyBDaGVja2VkXFxuJyArIEpTT04uc3RyaW5naWZ5KHZhbE9iaiwgbnVsbCwgMikgKyAnXFxuXFxuRXJyb3JzXFxuJyArIEpTT04uc3RyaW5naWZ5KGVycm9ycywgbnVsbCwgMikpO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6IHVwZGF0ZS5tZXNzYWdlSWQsXG5cdFx0XHRcdFx0XHRcdGhhc0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRkYXRhOiAnSW50ZXJuYWwgRXJyb3InXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XG5cdFx0XHRcdFx0XHR0aGlzLl9tYWluU2VydmVyLmdldFF1ZXVlTWFuYWdlcigpLmFkZE1ldGhvZFJlc3BvbnNlKHVwZGF0ZUNvcHksIHNlcnZlclJlcyk7XG5cdFx0XHRcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBjb25zb2xlLmxvZygnUnVuIE1ldGhvZCcsIHVwZGF0ZS5tZXRob2QpO1xuXHRcdFxuXHRcdHRoYXQuX21ldGhvZHNbdXBkYXRlLm1ldGhvZF0uZnVuY3Rpb24uY2FsbChPYmplY3QuYXNzaWduKHt9LCB0aGF0LCB7aWRfdXNlcjogdXBkYXRlLmlkX3VzZXIsIHVzZXI6IHVwZGF0ZS51c2VyLCBpZF93czogdXBkYXRlLmlkX3dzfSksIC4uLnVwZGF0ZS5tZXRob2RfZGF0YSkudGhlbihyZXMgPT4ge1xuXHRcdFx0bGV0IHNlcnZlclJlczogU2VydmVyUmVzcG9uc2VNb2RlbCA9IHtcblx0XHRcdFx0bWVzc2FnZUlkOiB1cGRhdGUubWVzc2FnZUlkLFxuXHRcdFx0XHRoYXNFcnJvcjogZmFsc2UsXG5cdFx0XHRcdGRhdGE6IHJlc1xuXHRcdFx0fTtcblxuXHRcdFx0dGhpcy5fbWFpblNlcnZlci5nZXRRdWV1ZU1hbmFnZXIoKS5hZGRNZXRob2RSZXNwb25zZSh1cGRhdGVDb3B5LCBzZXJ2ZXJSZXMpO1xuXHRcdH0sIGVyciA9PiB7XG5cdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRtZXNzYWdlSWQ6IHVwZGF0ZS5tZXNzYWdlSWQsXG5cdFx0XHRcdGhhc0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRkYXRhOiBlcnJcblx0XHRcdH07XG5cblx0XHRcdHRoaXMuX21haW5TZXJ2ZXIuZ2V0UXVldWVNYW5hZ2VyKCkuYWRkTWV0aG9kUmVzcG9uc2UodXBkYXRlQ29weSwgc2VydmVyUmVzKTtcblx0XHR9KTtcblx0fVxuXG5cblxuXHQvLyBDYWxsL3J1biBtZXRob2QgKEVtaXQgb24gU29ja2V0KVxuXHRwdWJsaWMgY2FsbE1ldGhvZCh3czogV2ViU29ja2V0LCBtZXNzYWdlSWQsIG1ldGhvZCwgLi4ubWV0aG9kRGF0YTogYW55W10pIHtcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHRpZiAoIXRoYXQuX21ldGhvZHNbbWV0aG9kXSkge1xuXHRcdFx0Y29uc29sZS5sb2coJ05vIE1ldGhvZDogJyArIG1ldGhvZCk7XG5cblx0XHRcdHRoYXQuc2VuZEVtYWlsKCdkZXZAcmVzb2x2ZWlvLmNvbScsICdTRVJWRVIgLSBFcnJvciBEZXRlY3RlZCAtICcgKyB0aGF0LnNlcnZlckNvbmZpZ1snQ0xJRU5UX05BTUUnXSwgJ05vIE1ldGhvZDogJyArIG1ldGhvZCk7XG5cdFx0XHRcblx0XHRcdGxldCBzZXJ2ZXJSZXM6IFNlcnZlclJlc3BvbnNlTW9kZWwgPSB7XG5cdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRoYXNFcnJvcjogdHJ1ZSxcblx0XHRcdFx0ZGF0YTogJ0ludGVybmFsIEVycm9yJ1xuXHRcdFx0fTtcblxuXHRcdFx0dGhpcy5zZW5kV1Mod3MsIG1ldGhvZCwgbWV0aG9kRGF0YSwgc2VydmVyUmVzKTtcblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICgobWV0aG9kRGF0YS5sZW5ndGggPiAxIHx8IG1ldGhvZERhdGFbMF0pICYmICF0aGF0Ll9tZXRob2RzW21ldGhvZF0uc2tpcFZhbGlkYXRpb24pIHtcblx0XHRcdGlmICghdGhhdC5fbWV0aG9kc1ttZXRob2RdLmNoZWNrKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ05vIENoZWNrIEZ1bmN0aW9uIEZvciBNZXRob2QgJyArIG1ldGhvZCk7XG5cblx0XHRcdFx0dGhhdC5zZW5kRW1haWwoJ2RldkByZXNvbHZlaW8uY29tJywgJ1NFUlZFUiAtIEVycm9yIERldGVjdGVkIC0gJyArIHRoYXQuc2VydmVyQ29uZmlnWydDTElFTlRfTkFNRSddLCAnTm8gQ2hlY2sgRnVuY3Rpb24gRm9yIE1ldGhvZCAnICsgbWV0aG9kKTtcblx0XHRcdFx0XG5cdFx0XHRcdGxldCBzZXJ2ZXJSZXM6IFNlcnZlclJlc3BvbnNlTW9kZWwgPSB7XG5cdFx0XHRcdFx0bWVzc2FnZUlkOiBtZXNzYWdlSWQsXG5cdFx0XHRcdFx0aGFzRXJyb3I6IHRydWUsXG5cdFx0XHRcdFx0ZGF0YTogJ0ludGVybmFsIEVycm9yJ1xuXHRcdFx0XHR9O1xuXHRcblx0XHRcdFx0dGhpcy5zZW5kV1Mod3MsIG1ldGhvZCwgbWV0aG9kRGF0YSwgc2VydmVyUmVzKTtcblx0XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKCF0aGF0Ll9tZXRob2RzW21ldGhvZF0uY2hlY2suX3NjaGVtYSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdObyBDaGVjayBTY2hlbWEgRm9yIE1ldGhvZCAnICsgbWV0aG9kKTtcblxuXHRcdFx0XHR0aGF0LnNlbmRFbWFpbCgnZGV2QHJlc29sdmVpby5jb20nLCAnU0VSVkVSIC0gRXJyb3IgRGV0ZWN0ZWQgLSAnICsgdGhhdC5zZXJ2ZXJDb25maWdbJ0NMSUVOVF9OQU1FJ10sICdObyBDaGVjayBGdW5jdGlvbiBGb3IgTWV0aG9kICcgKyBtZXRob2QpO1xuXHRcdFx0XHRcblx0XHRcdFx0bGV0IHNlcnZlclJlczogU2VydmVyUmVzcG9uc2VNb2RlbCA9IHtcblx0XHRcdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdFx0XHRoYXNFcnJvcjogdHJ1ZSxcblx0XHRcdFx0XHRkYXRhOiAnSW50ZXJuYWwgRXJyb3InXG5cdFx0XHRcdH07XG5cdFxuXHRcdFx0XHR0aGlzLnNlbmRXUyh3cywgbWV0aG9kLCBtZXRob2REYXRhLCBzZXJ2ZXJSZXMpO1xuXHRcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGxldCB2YWxPYmogPSB7fTtcblx0XHRcdFx0bGV0IHZhbEtleXMgPSBPYmplY3Qua2V5cyh0aGF0Ll9tZXRob2RzW21ldGhvZF0uY2hlY2suX3NjaGVtYSk7XG5cblx0XHRcdFx0bGV0IHJvb3RLZXlzID0gdmFsS2V5cy5maWx0ZXIoYSA9PiAhYS5pbmNsdWRlcygnLicpKTtcblx0XHRcdFx0XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWV0aG9kRGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhbE9ialtyb290S2V5c1tpXV0gPSBtZXRob2REYXRhW2ldO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR0aGF0Ll9tZXRob2RzW21ldGhvZF0uY2hlY2sudmFsaWRhdGUodmFsT2JqKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXRjaCAoZXJyb3JzKSB7XG5cdFx0XHRcdFx0aWYgKGVycm9ycykge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgaW4gTWV0aG9kIENoZWNrICgnICsgbWV0aG9kICsgJyknLCBlcnJvcnMpO1xuXG5cdFx0XHRcdFx0XHR0aGF0LnNlbmRFbWFpbCgnZGV2QHJlc29sdmVpby5jb20nLCAnU0VSVkVSIC0gRXJyb3IgRGV0ZWN0ZWQgLSAnICsgdGhhdC5zZXJ2ZXJDb25maWdbJ0NMSUVOVF9OQU1FJ10sICdNYXRjaCBFcnJvciBPbiBNZXRob2QgJyArIG1ldGhvZCArICdcXG5cXG5EYXRhIEJlaW5nIENoZWNrZWRcXG4nICsgSlNPTi5zdHJpbmdpZnkodmFsT2JqLCBudWxsLCAyKSArICdcXG5cXG5FcnJvcnNcXG4nICsgSlNPTi5zdHJpbmdpZnkoZXJyb3JzLCBudWxsLCAyKSk7XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdGxldCBzZXJ2ZXJSZXM6IFNlcnZlclJlc3BvbnNlTW9kZWwgPSB7XG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRcdFx0XHRoYXNFcnJvcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0ZGF0YTogJ0ludGVybmFsIEVycm9yJ1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0dGhpcy5zZW5kV1Mod3MsIG1ldGhvZCwgbWV0aG9kRGF0YSwgc2VydmVyUmVzKTtcblx0XHRcdFxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRcblx0XHR0aGF0Ll9tZXRob2RzW21ldGhvZF0uZnVuY3Rpb24uY2FsbChPYmplY3QuYXNzaWduKHt9LCB0aGF0LCB7aWRfdXNlcjogd3NbJ2lkX3VzZXInXSwgdXNlcjogd3NbJ3VzZXInXSwgaWRfd3M6IHdzWydpZF9zb2NrZXQnXX0pLCAuLi5tZXRob2REYXRhKS50aGVuKHJlcyA9PiB7XG5cdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdFx0aGFzRXJyb3I6IGZhbHNlLFxuXHRcdFx0XHRkYXRhOiByZXNcblx0XHRcdH07XG5cblx0XHRcdHRoaXMuc2VuZFdTKHdzLCBtZXRob2QsIG1ldGhvZERhdGEsIHNlcnZlclJlcyk7XG5cdFx0fSwgZXJyID0+IHtcblx0XHRcdGxldCBzZXJ2ZXJSZXM6IFNlcnZlclJlc3BvbnNlTW9kZWwgPSB7XG5cdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRoYXNFcnJvcjogdHJ1ZSxcblx0XHRcdFx0ZGF0YTogZXJyXG5cdFx0XHR9O1xuXG5cdFx0XHR0aGlzLnNlbmRXUyh3cywgbWV0aG9kLCBtZXRob2REYXRhLCBzZXJ2ZXJSZXMpO1xuXHRcdH0pO1xuXHR9XG5cblx0Ly8gQ2FsbC9ydW4gbWV0aG9kIGludGVybmFsIChObyBFbWl0IG9uIFNvY2tldClcblx0cHVibGljIGNhbGxNZXRob2RJbnRlcm5hbChtZXRob2QsIC4uLm1ldGhvZERhdGE6IGFueVtdKTogUHJvbWlzZTxhbnk+IHtcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHRpZiAoIXRoYXQuX21ldGhvZHNbbWV0aG9kXSkge1xuXHRcdFx0Y29uc29sZS5sb2coJ05vIE1ldGhvZDogJyArIG1ldGhvZCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKChtZXRob2REYXRhLmxlbmd0aCA+IDEgfHwgKG1ldGhvZERhdGFbMF0gJiYgdHlwZW9mKG1ldGhvZERhdGFbMF0pICE9PSAnZnVuY3Rpb24nKSkgJiYgIXRoYXQuX21ldGhvZHNbbWV0aG9kXS5za2lwVmFsaWRhdGlvbikge1xuXHRcdFx0aWYgKCF0aGF0Ll9tZXRob2RzW21ldGhvZF0uY2hlY2spIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcignTm8gQ2hlY2sgRnVuY3Rpb24gRm9yIE1ldGhvZCAnICsgbWV0aG9kKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAoIXRoYXQuX21ldGhvZHNbbWV0aG9kXS5jaGVjay5fc2NoZW1hKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ05vIENoZWNrIFNjaGVtYSBGb3IgTWV0aG9kICcgKyBtZXRob2QpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IHByb21pc2UgPSB0aGF0Ll9tZXRob2RzW21ldGhvZF0uZnVuY3Rpb24uY2FsbCh0aGF0LCAuLi5tZXRob2REYXRhKTtcblxuXHRcdGlmIChtZXRob2REYXRhW21ldGhvZERhdGEubGVuZ3RoIC0gMV0gJiYgdHlwZW9mKG1ldGhvZERhdGFbbWV0aG9kRGF0YS5sZW5ndGggLSAxXSkgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHByb21pc2UudGhlbihyZXMgPT4gbWV0aG9kRGF0YVttZXRob2REYXRhLmxlbmd0aCAtIDFdKG51bGwsIHJlcyksIGVyciA9PiBtZXRob2REYXRhW21ldGhvZERhdGEubGVuZ3RoIC0gMV0oZXJyLCBudWxsKSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHByb21pc2U7XG5cdH1cblxuXHRwcml2YXRlIHNlbmRXUyh3czogV2ViU29ja2V0LCBtZXRob2Q6IHN0cmluZywgbWV0aG9kRGF0YTogYW55W10sIGRhdGE6IFNlcnZlclJlc3BvbnNlTW9kZWwpIHtcblx0XHR0aGlzLl9zZW5kUXVldWUuc3BsaWNlKDAsIDAsIHtcblx0XHRcdGlkX3dzOiB3c1snaWRfc29ja2V0J10sXG5cdFx0XHRtZXRob2Q6IG1ldGhvZCxcblx0XHRcdG1ldGhvZERhdGE6IG1ldGhvZERhdGEsXG5cdFx0XHRkYXRhOiBkYXRhXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgc2VuZEVtYWlsKHNlbmRUbzogc3RyaW5nLCBzdWJqZWN0OiBzdHJpbmcsIHRleHQ/OiBzdHJpbmcsIGh0bWw/OiBzdHJpbmcsIGF0dGFjaG1lbnRzPzogYW55W10pIHtcblx0XHR0aGlzLl9tYWlsZXIuc2VuZE1haWwoe1xuXHRcdFx0cmVwbHlUbzogdW5kZWZpbmVkLFxuXHRcdFx0ZnJvbTogdGhpcy5zZXJ2ZXJDb25maWcuTUFJTF9GUk9NLFxuXHRcdFx0dG86IHNlbmRUbyxcblx0XHRcdHN1YmplY3Q6IHN1YmplY3QsXG5cdFx0XHR0ZXh0OiB0ZXh0LFxuXHRcdFx0aHRtbDogaHRtbCxcblx0XHRcdGF0dGFjaG1lbnRzOiBhdHRhY2htZW50c1xuXHRcdH0sIChlcnIsIGluZm8pID0+IHtcblx0XHRcdGlmIChlcnIpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRBV1MoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2F3cztcblx0fVxuXG5cdHB1YmxpYyByZWFkRmlsZShmaWxlTmFtZSkge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRmcy5yZWFkRmlsZShwYXRoLmpvaW4oX19kaXJuYW1lLCAoJy4uL3ByaXZhdGUvJyArIGZpbGVOYW1lKSksICd1dGYtOCcsIChlcnIsIHJlcykgPT4geyBcblx0XHRcdFx0aWYgKGVycikge1xuXHRcdFx0XHRcdHJlamVjdChlcnIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHJlc29sdmUocmVzKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgcmVhZEltYWdlKGZpbGVOYW1lKSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGZzLnJlYWRGaWxlKHBhdGguam9pbihfX2Rpcm5hbWUsICgnLi4vcHJpdmF0ZS8nICsgZmlsZU5hbWUpKSwgJ2Jhc2U2NCcsIChlcnIsIHJlcykgPT4geyBcblx0XHRcdFx0aWYgKGVycikge1xuXHRcdFx0XHRcdHJlamVjdChlcnIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHJlc29sdmUocmVzKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn0iXX0=
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(r,u,i,c){return new(i||(i=Promise))(function(e,t){function o(e){try{s(c.next(e))}catch(e){t(e)}}function n(e){try{s(c.throw(e))}catch(e){t(e)}}function s(t){t.done?e(t.value):new i(function(e){e(t.value)}).then(o,n)}s((c=c.apply(r,u||[])).next())})},__generator=this&&this.__generator||function(o,n){var s,r,u,e,i={label:0,sent:function(){if(1&u[0])throw u[1];return u[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(s)throw new TypeError("Generator is already executing.");for(;i;)try{if(s=1,r&&(u=2&t[0]?r.return:t[0]?r.throw||((u=r.return)&&u.call(r),0):r.next)&&!(u=u.call(r,t[1])).done)return u;switch(r=0,u&&(t=[2&t[0],u.value]),t[0]){case 0:case 1:u=t;break;case 4:return i.label++,{value:t[1],done:!1};case 5:i.label++,r=t[1],t=[0];continue;case 7:t=i.ops.pop(),i.trys.pop();continue;default:if(!(u=0<(u=i.trys).length&&u[u.length-1])&&(6===t[0]||2===t[0])){i=0;continue}if(3===t[0]&&(!u||t[1]>u[0]&&t[1]<u[3])){i.label=t[1];break}if(6===t[0]&&i.label<u[1]){i.label=u[1],u=t;break}if(u&&i.label<u[2]){i.label=u[2],i.ops.push(t);break}u[2]&&i.ops.pop(),i.trys.pop();continue}t=n.call(o,i)}catch(e){t=[6,e],r=0}finally{s=u=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),queue_flag_collection_1=require("../collections/queue-flag.collection"),queue_method_collection_1=require("../collections/queue-method.collection"),queue_response_collection_1=require("../collections/queue-response.collection"),method_response_collection_1=require("../collections/method-response.collection"),log_collection_1=require("../collections/log.collection"),common_1=require("../util/common"),QueueMethodManager=function(){function e(e){var n=this;this._sendQueue=[],this._runningQueue=!1,this._mainServer=e,setInterval(function(){if(!n._runningQueue&&n._sendQueue.length){n._runningQueue=!0;for(var e=function(e){var t=n._mainServer.getWS(n._sendQueue[e].id_ws);if(t&&t.readyState===t.OPEN&&t.bufferedAmount<20480){var o=n._sendQueue.pop();t.send(JSON.stringify(o.response),function(e){e&&(console.log("Error on WS: ",e),n._mainServer.unsubscribeWS(t))}),"countQuery"!==o.method&&"countCollectionWithQuery"!==o.method&&"find"!==o.method&&"findOne"!==o.method&&"findWithOptions"!==o.method&&"setWSAppVersion"!==o.method&&"uploadFileAndSave"!==o.method&&(common_1.getBinarySize(JSON.stringify(o.methodData))<2e5&&common_1.getBinarySize(JSON.stringify(o.data))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"client-response",title:"Client Response",message:"User: "+t.user+", MessageId: "+o.messageId+", Method: "+o.method,payload:[JSON.stringify(o.methodData),o.response],method:o.method,user:t.user,messageId:o.messageId}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"client-response",title:"Client Response",message:"User: "+t.user+", MessageId: "+o.messageId+", Method: "+o.method,payload:"Too Big",method:o.method,user:t.user,messageId:o.messageId})),method_response_collection_1.MethodResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,id_user:o.id_user,message_id:o.messageId,data:JSON.stringify(o.method_data),response:o.response,method:o.method})}},t=n._sendQueue.length-1;0<=t;t--)e(t);n._runningQueue=!1}},50)}return e.prototype.addMethodToQueue=function(e,t,o,n,s,r){queue_method_collection_1.QueueMethods.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,id_ws:e,messageId:n,method:s,method_data:r,id_user:t,user:o})},e.prototype.runMethodQueue=function(n){return __awaiter(this,void 0,void 0,function(){var r,t,o=this;return __generator(this,function(e){switch(e.label){case 0:return n?(t=n,[3,3]):[3,1];case 1:return[4,queue_method_collection_1.QueueMethods.collection.countDocuments()];case 2:t=e.sent(),e.label=3;case 3:return(r=t)&&queue_flag_collection_1.QueueFlags.create({_id:"method-queue",__v:0}).then(function(s){return __awaiter(o,void 0,void 0,function(){var t,o,n;return __generator(this,function(e){switch(e.label){case 0:return s?[4,queue_method_collection_1.QueueMethods.find({}).sort({createdAt:1})]:[3,9];case 1:t=e.sent(),o=0,e.label=2;case 2:return o<t.length?(n=t[o],[4,this._mainServer.getMethodManager().callMethodQueue(n)]):[3,6];case 3:return e.sent(),[4,queue_method_collection_1.QueueMethods.deleteOne({_id:n._id}).exec()];case 4:e.sent(),e.label=5;case 5:return o++,[3,2];case 6:return[4,queue_flag_collection_1.QueueFlags.deleteOne({_id:"method-queue"}).exec()];case 7:return e.sent(),[4,queue_method_collection_1.QueueMethods.collection.countDocuments()];case 8:(r=e.sent())&&this.runMethodQueue(r),e.label=9;case 9:return[2]}})})},function(){}),[2]}})})},e.prototype.addMethodResponse=function(e,t){queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,id_ws:e.id_ws,id_user:e.id_user,user:e.user,messageId:e.messageId,method_data:e.method_data,response:t,method:e.method})},e.prototype.runMethodResponse=function(){return __awaiter(this,void 0,void 0,function(){var t,o,n,s;return __generator(this,function(e){switch(e.label){case 0:return[4,queue_response_collection_1.QueueResponses.collection.countDocuments()];case 1:return!e.sent()||this._runningMethodResponse?[3,7]:(this._runningMethodResponse=!0,t=this._mainServer.getWSList(),[4,queue_response_collection_1.QueueResponses.find({id_ws:{$in:t}})]);case 2:o=e.sent(),n=0,e.label=3;case 3:return n<o.length?(s=o[n],this._sendQueue.splice(0,0,s),[4,queue_response_collection_1.QueueResponses.deleteOne({_id:s._id}).exec()]):[3,6];case 4:e.sent(),e.label=5;case 5:return n++,[3,3];case 6:this._runningMethodResponse=!1,e.label=7;case 7:return[2]}})})},e}();exports.QueueMethodManager=QueueMethodManager;
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(r,u,i,c){return new(i||(i=Promise))(function(e,t){function o(e){try{s(c.next(e))}catch(e){t(e)}}function n(e){try{s(c.throw(e))}catch(e){t(e)}}function s(t){t.done?e(t.value):new i(function(e){e(t.value)}).then(o,n)}s((c=c.apply(r,u||[])).next())})},__generator=this&&this.__generator||function(o,n){var s,r,u,e,i={label:0,sent:function(){if(1&u[0])throw u[1];return u[1]},trys:[],ops:[]};return e={next:t(0),throw:t(1),return:t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function(t){if(s)throw new TypeError("Generator is already executing.");for(;i;)try{if(s=1,r&&(u=2&t[0]?r.return:t[0]?r.throw||((u=r.return)&&u.call(r),0):r.next)&&!(u=u.call(r,t[1])).done)return u;switch(r=0,u&&(t=[2&t[0],u.value]),t[0]){case 0:case 1:u=t;break;case 4:return i.label++,{value:t[1],done:!1};case 5:i.label++,r=t[1],t=[0];continue;case 7:t=i.ops.pop(),i.trys.pop();continue;default:if(!(u=0<(u=i.trys).length&&u[u.length-1])&&(6===t[0]||2===t[0])){i=0;continue}if(3===t[0]&&(!u||t[1]>u[0]&&t[1]<u[3])){i.label=t[1];break}if(6===t[0]&&i.label<u[1]){i.label=u[1],u=t;break}if(u&&i.label<u[2]){i.label=u[2],i.ops.push(t);break}u[2]&&i.ops.pop(),i.trys.pop();continue}t=n.call(o,i)}catch(e){t=[6,e],r=0}finally{s=u=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([t,e])}}};Object.defineProperty(exports,"__esModule",{value:!0});var mongoose_1=require("mongoose"),queue_flag_collection_1=require("../collections/queue-flag.collection"),queue_method_collection_1=require("../collections/queue-method.collection"),queue_response_collection_1=require("../collections/queue-response.collection"),method_response_collection_1=require("../collections/method-response.collection"),log_collection_1=require("../collections/log.collection"),common_1=require("../util/common"),QueueMethodManager=function(){function e(e){var n=this;this._sendQueue=[],this._runningQueue=!1,this._mainServer=e,setInterval(function(){if(!n._runningQueue&&n._sendQueue.length){n._runningQueue=!0;for(var e=function(e){var t=n._mainServer.getWS(n._sendQueue[e].id_ws);if(t&&t.readyState===t.OPEN&&t.bufferedAmount<20480){var o=n._sendQueue.pop();t.send(JSON.stringify(o.response),function(e){e&&(console.log("Error on WS: ",e),n._mainServer.unsubscribeWS(t))}),"countQuery"!==o.method&&"countCollectionWithQuery"!==o.method&&"find"!==o.method&&"findOne"!==o.method&&"findWithOptions"!==o.method&&"setWSAppVersion"!==o.method&&"uploadFileAndSave"!==o.method&&(common_1.getBinarySize(JSON.stringify(o.methodData))<2e5&&common_1.getBinarySize(JSON.stringify(o.data))<2e5?log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"client-response",title:"Client Response",message:"User: "+t.user+", MessageId: "+o.messageId+", Method: "+o.method,payload:[JSON.stringify(o.methodData),o.response],method:o.method,user:t.user,messageId:o.messageId}):log_collection_1.Logs.create({_id:mongoose_1.Types.ObjectId().toHexString(),date:new Date,type:"client-response",title:"Client Response",message:"User: "+t.user+", MessageId: "+o.messageId+", Method: "+o.method,payload:"Too Big",method:o.method,user:t.user,messageId:o.messageId})),method_response_collection_1.MethodResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,id_user:o.id_user,message_id:o.messageId,data:JSON.stringify(o.method_data),response:o.response,method:o.method})}},t=n._sendQueue.length-1;0<=t;t--)e(t);n._runningQueue=!1}},50)}return e.prototype.addMethodToQueue=function(e,t,o,n,s,r){queue_method_collection_1.QueueMethods.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,id_ws:e,messageId:n,method:s,method_data:r,id_user:t,user:o})},e.prototype.runMethodQueue=function(n){return __awaiter(this,void 0,void 0,function(){var r,t,o=this;return __generator(this,function(e){switch(e.label){case 0:return n?(t=n,[3,3]):[3,1];case 1:return[4,queue_method_collection_1.QueueMethods.collection.countDocuments()];case 2:t=e.sent(),e.label=3;case 3:return(r=t)&&queue_flag_collection_1.QueueFlags.create({_id:"method-queue",__v:0}).then(function(s){return __awaiter(o,void 0,void 0,function(){var t,o,n;return __generator(this,function(e){switch(e.label){case 0:return s?[4,queue_method_collection_1.QueueMethods.find({}).sort({createdAt:1})]:[3,9];case 1:t=e.sent(),o=0,e.label=2;case 2:return o<t.length?(n=t[o],[4,this._mainServer.getMethodManager().callMethodQueue(n)]):[3,6];case 3:return e.sent(),[4,queue_method_collection_1.QueueMethods.deleteOne({_id:n._id}).exec()];case 4:e.sent(),e.label=5;case 5:return o++,[3,2];case 6:return[4,queue_flag_collection_1.QueueFlags.deleteOne({_id:"method-queue"}).exec()];case 7:return e.sent(),[4,queue_method_collection_1.QueueMethods.collection.countDocuments()];case 8:(r=e.sent())&&this.runMethodQueue(r),e.label=9;case 9:return[2]}})})},function(){}),[2]}})})},e.prototype.addMethodResponse=function(e,t){queue_response_collection_1.QueueResponses.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,id_ws:e.id_ws,id_user:e.id_user,user:e.user,messageId:e.messageId,method_data:e.method_data,response:t,method:e.method})},e.prototype.runMethodResponse=function(){return __awaiter(this,void 0,void 0,function(){var t,o,n,s;return __generator(this,function(e){switch(e.label){case 0:return[4,queue_response_collection_1.QueueResponses.collection.countDocuments()];case 1:return!e.sent()||this._runningMethodResponse?[3,7]:(this._runningMethodResponse=!0,t=this._mainServer.getWSList(),[4,queue_response_collection_1.QueueResponses.find({id_ws:{$in:t}})]);case 2:o=e.sent(),n=0,e.label=3;case 3:return n<o.length?(s=o[n],this._sendQueue.splice(0,0,s),[4,queue_response_collection_1.QueueResponses.deleteOne({_id:s._id}).exec()]):[3,6];case 4:e.sent(),e.label=5;case 5:return n++,[3,3];case 6:this._runningMethodResponse=!1,e.label=7;case 7:return[2]}})})},e}();exports.QueueMethodManager=QueueMethodManager;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2Vycy9xdWV1ZS1tZXRob2QubWFuYWdlci50cyJdLCJuYW1lcyI6WyJtb25nb29zZV8xIiwicmVxdWlyZSIsInF1ZXVlX2ZsYWdfY29sbGVjdGlvbl8xIiwicXVldWVfbWV0aG9kX2NvbGxlY3Rpb25fMSIsInF1ZXVlX3Jlc3BvbnNlX2NvbGxlY3Rpb25fMSIsIm1ldGhvZF9yZXNwb25zZV9jb2xsZWN0aW9uXzEiLCJsb2dfY29sbGVjdGlvbl8xIiwiY29tbW9uXzEiLCJRdWV1ZU1ldGhvZE1hbmFnZXIiLCJtYWluU2VydmVyIiwiX3RoaXMiLCJ0aGlzIiwiX3NlbmRRdWV1ZSIsIl9ydW5uaW5nUXVldWUiLCJfbWFpblNlcnZlciIsInNldEludGVydmFsIiwibGVuZ3RoIiwiaSIsIndzIiwiZ2V0V1MiLCJpZF93cyIsInJlYWR5U3RhdGUiLCJPUEVOIiwiYnVmZmVyZWRBbW91bnQiLCJzZW5kSXRlbSIsInBvcCIsInNlbmQiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzcG9uc2UiLCJlcnJvciIsImNvbnNvbGUiLCJsb2ciLCJ1bnN1YnNjcmliZVdTIiwibWV0aG9kIiwiZ2V0QmluYXJ5U2l6ZSIsIm1ldGhvZERhdGEiLCJkYXRhIiwiTG9ncyIsImNyZWF0ZSIsIl9pZCIsIlR5cGVzIiwiT2JqZWN0SWQiLCJ0b0hleFN0cmluZyIsImRhdGUiLCJEYXRlIiwidHlwZSIsInRpdGxlIiwibWVzc2FnZSIsIm1lc3NhZ2VJZCIsInBheWxvYWQiLCJ1c2VyIiwiTWV0aG9kUmVzcG9uc2VzIiwiX192IiwiaWRfdXNlciIsIm1lc3NhZ2VfaWQiLCJtZXRob2RfZGF0YSIsInByb3RvdHlwZSIsImFkZE1ldGhvZFRvUXVldWUiLCJRdWV1ZU1ldGhvZHMiLCJydW5NZXRob2RRdWV1ZSIsImNvdW50IiwiX2EiLCJjb2xsZWN0aW9uIiwiY291bnREb2N1bWVudHMiLCJfYiIsInNlbnQiLCJ1cGRhdGVDbnQiLCJRdWV1ZUZsYWdzIiwidGhlbiIsInJlcyIsIl9fYXdhaXRlciIsImZpbmQiLCJzb3J0IiwiY3JlYXRlZEF0IiwidXBkYXRlcyIsInVwZGF0ZSIsImdldE1ldGhvZE1hbmFnZXIiLCJjYWxsTWV0aG9kUXVldWUiLCJkZWxldGVPbmUiLCJleGVjIiwiYWRkTWV0aG9kUmVzcG9uc2UiLCJRdWV1ZVJlc3BvbnNlcyIsInJ1bk1ldGhvZFJlc3BvbnNlIiwiX3J1bm5pbmdNZXRob2RSZXNwb25zZSIsIndzTGlzdCIsImdldFdTTGlzdCIsIiRpbiIsInJlc3BvbnNlcyIsInNwbGljZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJvN0NBQUEsSUFBQUEsV0FBQUMsUUFBQSxZQUNBQyx3QkFBQUQsUUFBQSx3Q0FFQUUsMEJBQUFGLFFBQUEsMENBQ0FHLDRCQUFBSCxRQUFBLDRDQUVBSSw2QkFBQUosUUFBQSw2Q0FDQUssaUJBQUFMLFFBQUEsaUNBQ0FNLFNBQUFOLFFBQUEsa0JBR0FPLG1CQUFBLFdBUUMsU0FBQUEsRUFBWUMsR0FBWixJQUFBQyxFQUFBQyxLQUxRQSxLQUFBQyxXQUFhLEdBQ2JELEtBQUFFLGVBQWdCLEVBS3ZCRixLQUFLRyxZQUFjTCxFQUVuQk0sWUFBWSxXQUNYLElBQUtMLEVBQUtHLGVBQ0xILEVBQUtFLFdBQVdJLE9BQVEsQ0FDM0JOLEVBQUtHLGVBQWdCLEVBQ3JCLG1CQUFTSSxHQUNSLElBQUlDLEVBQUtSLEVBQUtJLFlBQVlLLE1BQU1ULEVBQUtFLFdBQVdLLEdBQUdHLE9BQ25ELEdBQUlGLEdBQU1BLEVBQUdHLGFBQWVILEVBQUdJLE1BQzFCSixFQUFHSyxlQUFpQixNQUFPLENBQzlCLElBQUlDLEVBQVdkLEVBQUtFLFdBQVdhLE1BQy9CUCxFQUFHUSxLQUFLQyxLQUFLQyxVQUFVSixFQUFTSyxVQUFXLFNBQUNDLEdBQ3ZDQSxJQUNIQyxRQUFRQyxJQUFJLGdCQUFpQkYsR0FDN0JwQixFQUFLSSxZQUFZbUIsY0FBY2YsTUFJVCxlQUFwQk0sRUFBU1UsUUFBK0MsNkJBQXBCVixFQUFTVSxRQUE2RCxTQUFwQlYsRUFBU1UsUUFB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bnQiOlsiaW1wb3J0IHsgVHlwZXMgfSBmcm9tICdtb25nb29zZSc7XG5pbXBvcnQgeyBRdWV1ZUZsYWdzIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvcXVldWUtZmxhZy5jb2xsZWN0aW9uJztcbmltcG9ydCB7IFF1ZXVlTWV0aG9kTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcXVldWUtbWV0aG9kLm1vZGVsJztcbmltcG9ydCB7IFF1ZXVlTWV0aG9kcyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL3F1ZXVlLW1ldGhvZC5jb2xsZWN0aW9uJztcbmltcG9ydCB7IFF1ZXVlUmVzcG9uc2VzIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvcXVldWUtcmVzcG9uc2UuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBTZXJ2ZXJSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NlcnZlci1yZXNwb25zZS5tb2RlbCc7XG5pbXBvcnQgeyBNZXRob2RSZXNwb25zZXMgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9tZXRob2QtcmVzcG9uc2UuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBMb2dzIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvbG9nLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgZ2V0QmluYXJ5U2l6ZSB9IGZyb20gJy4uL3V0aWwvY29tbW9uJztcbmltcG9ydCB7IFJlc29sdmVJT01haW5TZXJ2ZXIgfSBmcm9tICcuLi9zZXJ2ZXItYXBwJztcblxuZXhwb3J0IGNsYXNzIFF1ZXVlTWV0aG9kTWFuYWdlciB7XG5cblx0cHJpdmF0ZSBfbWFpblNlcnZlcjogUmVzb2x2ZUlPTWFpblNlcnZlcjtcblx0cHJpdmF0ZSBfc2VuZFF1ZXVlID0gW107XG5cdHByaXZhdGUgX3J1bm5pbmdRdWV1ZSA9IGZhbHNlO1xuXG5cdHByaXZhdGUgX3J1bm5pbmdNZXRob2RSZXNwb25zZTtcblxuXHRjb25zdHJ1Y3RvcihtYWluU2VydmVyKSB7XG5cdFx0dGhpcy5fbWFpblNlcnZlciA9IG1haW5TZXJ2ZXI7XG5cblx0XHRzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuX3J1bm5pbmdRdWV1ZSkge1xuXHRcdFx0XHRpZiAodGhpcy5fc2VuZFF1ZXVlLmxlbmd0aCkge1xuXHRcdFx0XHRcdHRoaXMuX3J1bm5pbmdRdWV1ZSA9IHRydWU7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuX3NlbmRRdWV1ZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0XHRcdFx0bGV0IHdzID0gdGhpcy5fbWFpblNlcnZlci5nZXRXUyh0aGlzLl9zZW5kUXVldWVbaV0uaWRfd3MpO1xuXHRcdFx0XHRcdFx0aWYgKHdzICYmIHdzLnJlYWR5U3RhdGUgPT09IHdzLk9QRU4pIHtcblx0XHRcdFx0XHRcdFx0aWYgKHdzLmJ1ZmZlcmVkQW1vdW50IDwgMjA0ODApIHtcblx0XHRcdFx0XHRcdFx0XHRsZXQgc2VuZEl0ZW0gPSB0aGlzLl9zZW5kUXVldWUucG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0d3Muc2VuZChKU09OLnN0cmluZ2lmeShzZW5kSXRlbS5yZXNwb25zZSksIChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFcnJvciBvbiBXUzogJywgZXJyb3IpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLl9tYWluU2VydmVyLnVuc3Vic2NyaWJlV1Mod3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNlbmRJdGVtLm1ldGhvZCAhPT0gJ2NvdW50UXVlcnknICYmIHNlbmRJdGVtLm1ldGhvZCAhPT0gJ2NvdW50Q29sbGVjdGlvbldpdGhRdWVyeScgJiYgc2VuZEl0ZW0ubWV0aG9kICE9PSAnZmluZCcgJiYgc2VuZEl0ZW0ubWV0aG9kICE9PSAnZmluZE9uZScgJiYgc2VuZEl0ZW0ubWV0aG9kICE9PSAnZmluZFdpdGhPcHRpb25zJyAmJiBzZW5kSXRlbS5tZXRob2QgIT09ICdzZXRXU0FwcFZlcnNpb24nICYmIHNlbmRJdGVtLm1ldGhvZCAhPT0gJ3VwbG9hZEZpbGVBbmRTYXZlJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0ubWV0aG9kRGF0YSkpIDwgMjAwMDAwICYmIGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0uZGF0YSkpIDwgMjAwMDAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdjbGllbnQtcmVzcG9uc2UnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAnQ2xpZW50IFJlc3BvbnNlJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlOiAnVXNlcjogJyArIHdzWyd1c2VyJ10gKyAnLCBNZXNzYWdlSWQ6ICcgKyBzZW5kSXRlbS5tZXNzYWdlSWQgKyAnLCBNZXRob2Q6ICcgKyBzZW5kSXRlbS5tZXRob2QsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGF5bG9hZDogW0pTT04uc3RyaW5naWZ5KHNlbmRJdGVtLm1ldGhvZERhdGEpLCBzZW5kSXRlbS5yZXNwb25zZV0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiBzZW5kSXRlbS5tZXRob2QsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcjogd3NbJ3VzZXInXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6IHNlbmRJdGVtLm1lc3NhZ2VJZFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnY2xpZW50LXJlc3BvbnNlJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ0NsaWVudCBSZXNwb25zZScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB3c1sndXNlciddICsgJywgTWVzc2FnZUlkOiAnICsgc2VuZEl0ZW0ubWVzc2FnZUlkICsgJywgTWV0aG9kOiAnICsgc2VuZEl0ZW0ubWV0aG9kLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6ICdUb28gQmlnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6IHNlbmRJdGVtLm1ldGhvZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB3c1sndXNlciddLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogc2VuZEl0ZW0ubWVzc2FnZUlkXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdE1ldGhvZFJlc3BvbnNlcy5jcmVhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRfX3Y6IDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRpZF91c2VyOiBzZW5kSXRlbS5pZF91c2VyLFxuXHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZV9pZDogc2VuZEl0ZW0ubWVzc2FnZUlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YTogSlNPTi5zdHJpbmdpZnkoc2VuZEl0ZW0ubWV0aG9kX2RhdGEpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2U6IHNlbmRJdGVtLnJlc3BvbnNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiBzZW5kSXRlbS5tZXRob2Rcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMuX3J1bm5pbmdRdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSwgNTApO1xuXHR9XG5cblx0cHVibGljIGFkZE1ldGhvZFRvUXVldWUoaWRfd3M6IHN0cmluZywgaWRfdXNlcjogc3RyaW5nLCB1c2VyOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgZGF0YTogYW55W10pIHtcblxuXHRcdC8vIGNvbnNvbGUubG9nKCdBZGQgTWV0aG9kIFRvIFF1ZXVlJywgbWV0aG9kKTtcblxuXHRcdFF1ZXVlTWV0aG9kcy5jcmVhdGUoe1xuXHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRfX3Y6IDAsXG5cdFx0XHRpZF93czogaWRfd3MsXG5cdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdG1ldGhvZDogbWV0aG9kLFxuXHRcdFx0bWV0aG9kX2RhdGE6IGRhdGEsXG5cdFx0XHRpZF91c2VyOiBpZF91c2VyLFxuXHRcdFx0dXNlcjogdXNlclxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIHJ1bk1ldGhvZFF1ZXVlKGNvdW50PzogbnVtYmVyKSB7XG5cdFx0bGV0IHVwZGF0ZUNudCA9IGNvdW50ID8gY291bnQgOiBhd2FpdCBRdWV1ZU1ldGhvZHMuY29sbGVjdGlvbi5jb3VudERvY3VtZW50cygpO1xuXHRcdFxuXHRcdGlmICh1cGRhdGVDbnQpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdSdW4gTWV0aG9kIFF1ZXVlJywgdXBkYXRlQ250KTtcblxuXHRcdFx0UXVldWVGbGFncy5jcmVhdGUoe19pZDogJ21ldGhvZC1xdWV1ZScsIF9fdjogMH0pLnRoZW4oYXN5bmMgcmVzID0+IHtcblx0XHRcdFx0aWYgKHJlcykge1xuXHRcdFx0XHRcdGxldCB1cGRhdGVzID0gYXdhaXQgUXVldWVNZXRob2RzLmZpbmQoe30pLnNvcnQoe2NyZWF0ZWRBdDogMX0pO1xuXG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB1cGRhdGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgdXBkYXRlID0gdXBkYXRlc1tpXTtcblxuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5fbWFpblNlcnZlci5nZXRNZXRob2RNYW5hZ2VyKCkuY2FsbE1ldGhvZFF1ZXVlKHVwZGF0ZSk7XG5cdFx0XHRcdFx0XHRhd2FpdCBRdWV1ZU1ldGhvZHMuZGVsZXRlT25lKHtfaWQ6IHVwZGF0ZS5faWR9KS5leGVjKCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YXdhaXQgUXVldWVGbGFncy5kZWxldGVPbmUoe19pZDogJ21ldGhvZC1xdWV1ZSd9KS5leGVjKCk7XG5cblx0XHRcdFx0XHR1cGRhdGVDbnQgPSBhd2FpdCBRdWV1ZU1ldGhvZHMuY29sbGVjdGlvbi5jb3VudERvY3VtZW50cygpO1xuXG5cdFx0XHRcdFx0aWYgKHVwZGF0ZUNudCkge1xuXHRcdFx0XHRcdFx0dGhpcy5ydW5NZXRob2RRdWV1ZSh1cGRhdGVDbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSwgKCkgPT4ge30pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhZGRNZXRob2RSZXNwb25zZSh1cGRhdGU6IFF1ZXVlTWV0aG9kTW9kZWwsIHJlc3BvbnNlOiBTZXJ2ZXJSZXNwb25zZU1vZGVsKSB7XG5cdFx0UXVldWVSZXNwb25zZXMuY3JlYXRlKHtcblx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0X192OiAwLFxuXHRcdFx0aWRfd3M6IHVwZGF0ZS5pZF93cyxcblx0XHRcdGlkX3VzZXI6IHVwZGF0ZS5pZF91c2VyLFxuXHRcdFx0dXNlcjogdXBkYXRlLnVzZXIsXG5cdFx0XHRtZXNzYWdlSWQ6IHVwZGF0ZS5tZXNzYWdlSWQsXG5cdFx0XHRtZXRob2RfZGF0YTogdXBkYXRlLm1ldGhvZF9kYXRhLFxuXHRcdFx0cmVzcG9uc2U6IHJlc3BvbnNlLFxuXHRcdFx0bWV0aG9kOiB1cGRhdGUubWV0aG9kXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgcnVuTWV0aG9kUmVzcG9uc2UoKSB7XG5cdFx0bGV0IHJlc3BvbnNlQ250ID0gYXdhaXQgUXVldWVSZXNwb25zZXMuY29sbGVjdGlvbi5jb3VudERvY3VtZW50cygpO1xuXG5cdFx0aWYgKHJlc3BvbnNlQ250ICYmICF0aGlzLl9ydW5uaW5nTWV0aG9kUmVzcG9uc2UpIHtcblx0XHRcdHRoaXMuX3J1bm5pbmdNZXRob2RSZXNwb25zZSA9IHRydWU7XG5cblx0XHRcdGxldCB3c0xpc3QgPSB0aGlzLl9tYWluU2VydmVyLmdldFdTTGlzdCgpO1xuXG5cdFx0XHRsZXQgcmVzcG9uc2VzID0gYXdhaXQgUXVldWVSZXNwb25zZXMuZmluZCh7aWRfd3M6IHskaW46IHdzTGlzdH19KTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCByZXNwb25zZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0bGV0IHJlc3BvbnNlID0gcmVzcG9uc2VzW2ldO1xuXG5cdFx0XHRcdHRoaXMuX3NlbmRRdWV1ZS5zcGxpY2UoMCwgMCwgcmVzcG9uc2UpO1xuXG5cdFx0XHRcdGF3YWl0IFF1ZXVlUmVzcG9uc2VzLmRlbGV0ZU9uZSh7X2lkOiByZXNwb25zZS5faWR9KS5leGVjKCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuX3J1bm5pbmdNZXRob2RSZXNwb25zZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxufSJdfQ==
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(s,c,r,a){return new(r||(r=Promise))(function(t,i){function e(t){try{o(a.next(t))}catch(t){i(t)}}function n(t){try{o(a.throw(t))}catch(t){i(t)}}function o(i){i.done?t(i.value):new r(function(t){t(i.value)}).then(e,n)}o((a=a.apply(s,c||[])).next())})},__generator=this&&this.__generator||function(e,n){var o,s,c,t,r={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]};return t={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function i(i){return function(t){return function(i){if(o)throw new TypeError("Generator is already executing.");for(;r;)try{if(o=1,s&&(c=2&i[0]?s.return:i[0]?s.throw||((c=s.return)&&c.call(s),0):s.next)&&!(c=c.call(s,i[1])).done)return c;switch(s=0,c&&(i=[2&i[0],c.value]),i[0]){case 0:case 1:c=i;break;case 4:return r.label++,{value:i[1],done:!1};case 5:r.label++,s=i[1],i=[0];continue;case 7:i=r.ops.pop(),r.trys.pop();continue;default:if(!(c=0<(c=r.trys).length&&c[c.length-1])&&(6===i[0]||2===i[0])){r=0;continue}if(3===i[0]&&(!c||i[1]>c[0]&&i[1]<c[3])){r.label=i[1];break}if(6===i[0]&&r.label<c[1]){r.label=c[1],c=i;break}if(c&&r.label<c[2]){r.label=c[2],r.ops.push(i);break}c[2]&&r.ops.pop(),r.trys.pop();continue}i=n.call(e,r)}catch(t){i=[6,t],s=0}finally{o=c=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,t])}}};Object.defineProperty(exports,"__esModule",{value:!0});var MongoOplog=require("mongo-oplog"),logs_1=require("../publications/logs"),app_status_1=require("../publications/app-status"),app_version_1=require("../publications/app-version"),mongoose_1=require("mongoose"),files_1=require("../publications/files"),super_admin_1=require("../publications/super-admin"),active_subscription_collection_1=require("../collections/active-subscription.collection"),logged_in_users_collection_1=require("../collections/logged-in-users.collection"),cron_jobs_1=require("../publications/cron-jobs"),flags_1=require("../publications/flags"),method_calls_1=require("../publications/method-calls"),method_responses_1=require("../publications/method-responses"),support_tickets_1=require("../publications/support-tickets"),index_1=require("../index"),SubscriptionManager=function(){function t(t,i,e){var n=this;this._publications={},this._subscriptions=[],this._sendQueue=[],this._runningQueue=!1,this._mainServer=t,this.serverConfig=e,this._wss=i,super_admin_1.loadSuperAdminPublications(this),app_version_1.loadAppVersionPublications(this),app_status_1.loadAppStatusPublications(this),logs_1.loadLogPublications(this),files_1.loadFilePublications(this),cron_jobs_1.loadCronJobPublications(this),flags_1.loadFlagsPublications(this),method_calls_1.loadMethodCallsPublications(this),method_responses_1.loadMethodResponsePublications(this),support_tickets_1.loadSupportTicketPublications(this),this.tailOpLog(),index_1.default.getSupportDB()&&this.tailOpLogSupport(),setInterval(function(){if(!n._runningQueue&&n._sendQueue.length){n._runningQueue=!0;for(var t=function(t){var i=n._mainServer.getWS(n._sendQueue[t].id_ws);if(i&&i.readyState===i.OPEN){if(i.bufferedAmount<20480){var e=n._sendQueue.pop();i.send(JSON.stringify(e.data),function(t){t&&(console.log("Error on WS: ",t),n._mainServer.unsubscribeWS(i))})}}else n._sendQueue.splice(t,1)},i=n._sendQueue.length-1;0<=i;i--)t(i);n._runningQueue=!1}},50)}return t.prototype.publications=function(t){this._publications=Object.assign(this._publications,t)},t.prototype.loggedInLatency=function(e){return __awaiter(this,void 0,void 0,function(){var i;return __generator(this,function(t){switch(t.label){case 0:return[4,logged_in_users_collection_1.LoggedInUsers.findOne({id_ws:e.id_socket})];case 1:return(i=t.sent())?logged_in_users_collection_1.LoggedInUsers.updateOne({_id:i._id},{$set:{latency:e.latency}}).exec():this.unsubscribeAll(e),[2]}})})},t.prototype.subscribe=function(p,_,d){for(var b=[],t=3;t<arguments.length;t++)b[t-3]=arguments[t];return __awaiter(this,void 0,void 0,function(){var i,e,n,o,s,c,r,a,u,l;return __generator(this,function(t){switch(t.label){case 0:return(n=(e=this)._publications[d])?[3,1]:(console.error("No Publication: "+d),[2]);case 1:if(1<b.length||b[0]){if(!n.check)return console.error("No Check Function For Pub "+d),[2];if(!n.check._schema)return console.error("No Check Schema For Pub "+d),[2];for(o={},s=Object.keys(n.check._schema),c=s.filter(function(t){return!t.includes(".")}),r=0;r<b.length;r++)o[c[r]]=b[r];try{n.check.validate(o)}catch(t){if(t)return console.error("Error in Pub Check ("+d+")",t),[2]}}return(a=e._subscriptions.filter(function(t){return t.publication===d&&JSON.stringify(t.subscriptionData)===JSON.stringify(b)})[0])?a.clients.push({id_user:p.id_user,messageId:_,id_socket:p.id_socket}):e._subscriptions.push({publication:d,subscriptionData:b,collections:e.getPublicationCollections(d),clients:[{id_user:p.id_user,messageId:_,id_socket:p.id_socket}]}),a||(a=e._subscriptions.filter(function(t){return t.publication===d&&JSON.stringify(t.subscriptionData)===JSON.stringify(b)})[0]),e.sendPubDataOnce(p,_,a),!e._publications[a.publication].preFunction||a.preSubscriptionData?[3,3]:(u=a,[4,(i=e._publications[a.publication]).preFunction.apply(i,a.subscriptionData)]);case 2:u.preSubscriptionData=t.sent(),t.label=3;case 3:l=new active_subscription_collection_1.ActiveSubscriptions({date:new Date,publication:d,subData:JSON.stringify(b),collections:n.collections,clients:a.clients}),active_subscription_collection_1.ActiveSubscriptions.findOneAndUpdate({$and:[{publication:d},{subData:JSON.stringify(b)}]},{$setOnInsert:{_id:mongoose_1.Types.ObjectId().toHexString(),__v:0},$set:l},{upsert:!0}).exec(),t.label=4;case 4:return"appversion"===d&&logged_in_users_collection_1.LoggedInUsers.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,date:new Date,id_user:p.id_user,user:p.user,id_ws:p.id_socket}),[2]}})})},t.prototype.unsubscribe=function(s,c,r){for(var a=[],t=3;t<arguments.length;t++)a[t-3]=arguments[t];return __awaiter(this,void 0,void 0,function(){var i,e,n,o;return __generator(this,function(t){switch(t.label){case 0:return(i=this)._publications[r]?[3,1]:(console.log("No Publication: "+r),[2]);case 1:return(e=i._subscriptions.filter(function(t){return t.publication===r&&JSON.stringify(t.subscriptionData)===JSON.stringify(a)})[0])?0<=(n=e.clients.findIndex(function(t){return t.id_user===s.id_user&&t.messageId===c&&t.id_socket===s.id_socket}))?(e.clients.splice(n,1),e.clients.length?[3,2]:(i._subscriptions.splice(i._subscriptions.findIndex(function(t){return t.publication===r&&JSON.stringify(t.subscriptionData)===JSON.stringify(a)}),1),active_subscription_collection_1.ActiveSubscriptions.findOneAndRemove({$and:[{publication:r},{subData:JSON.stringify(a)}]}).exec(),[3,4])):[3,5]:[3,6];case 2:return[4,active_subscription_collection_1.ActiveSubscriptions.findOne({$and:[{publication:r},{subData:JSON.stringify(a)}]})];case 3:(o=t.sent())&&active_subscription_collection_1.ActiveSubscriptions.updateOne({_id:o._id},{$set:{clients:e.clients}}).exec(),t.label=4;case 4:return[3,5];case 5:return[3,6];case 6:return[2]}})})},t.prototype.unsubscribeAll=function(c){return __awaiter(this,void 0,void 0,function(){var n,i,o,e,s;return __generator(this,function(t){switch(t.label){case 0:return n=this,[4,logged_in_users_collection_1.LoggedInUsers.findOne({id_ws:c.id_socket})];case 1:for((i=t.sent())&&logged_in_users_collection_1.LoggedInUsers.deleteOne({_id:i._id}).exec(),o=n._subscriptions.filter(function(t){return t.clients.some(function(t){return t.id_user===c.id_user&&t.id_socket===c.id_socket})}),e=function(t){for(var i=o[t],e=i.clients.length-1;0<=e;e--)i.clients[e].id_socket===c.id_socket&&i.clients.splice(e,1);i.clients.length||n._subscriptions.splice(n._subscriptions.findIndex(function(t){return t.publication===i.publication&&JSON.stringify(t.subscriptionData)===JSON.stringify(i.subscriptionData)}),1)},s=o.length-1;0<=s;s--)e(s);return[4,active_subscription_collection_1.ActiveSubscriptions.find({"clients.id_socket":c.id_socket})];case 2:return t.sent().forEach(function(t){1===t.clients.length?active_subscription_collection_1.ActiveSubscriptions.deleteOne({_id:t._id}).exec():(t.clients.splice(t.clients.map(function(t){return t.id_socket}).indexOf(c.id_socket),1),active_subscription_collection_1.ActiveSubscriptions.updateOne({_id:t._id},{$set:{clients:t.clients}}).exec())}),[2]}})})},t.prototype.getPublicationCollections=function(t){return this._publications[t].collections},t.prototype.tailOpLog=function(){var n=this,o=this,t=MongoOplog(o.serverConfig.OPLOG_URL);t.tail().then(function(){console.log("tail started")}),t.on("insert",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),o.checkPubsForChanges(e,t.o),"cron-jobs"===e?n._mainServer.getCronManager().checkCronJobsForUpdates():"queue-methods"===e?n._mainServer.getQueueManager().runMethodQueue():"queue-responses"===e&&n._mainServer.getQueueManager().runMethodResponse()}),t.on("update",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),t.o._id=t.o2._id,o.checkPubsForChanges(e,t.o),"cron-jobs"===e&&n._mainServer.getCronManager().checkCronJobsForUpdates()}),t.on("delete",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),o.resendPubsForDelete(e),"cron-jobs"===e&&n._mainServer.getCronManager().checkCronJobsForUpdates()}),t.on("error",function(t){console.log("Error",t)}),t.on("end",function(){console.log("oplog ended"),process.exit()}),t.stop(function(){console.log("oplog stopped")})},t.prototype.tailOpLogSupport=function(){var n=this,t=MongoOplog(n.serverConfig.RESOLVEIO_SUPPORT_OPLOG_URL);t.tail().then(function(){console.log("tail started support")}),t.on("insert",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),"support-tickets"===e&&n.checkSupportPubsForChanges(e,t.o)}),t.on("update",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),t.o._id=t.o2._id,"support-tickets"===e&&n.checkSupportPubsForChanges(e,t.o)}),t.on("delete",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),"support-tickets"===e&&n.resendPubsForDelete(e)}),t.on("error",function(t){console.log("Error support",t)}),t.on("end",function(){console.log("oplog ended support"),process.exit()}),t.stop(function(){console.log("oplog stopped support")})},t.prototype.resendPubsForDelete=function(i){var n=this;n._subscriptions.filter(function(t){return t.collections.includes(i)}).forEach(function(e){n._publications[e.publication].ws_specific?e.clients.forEach(function(i){n._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&n.sendPubDataOnce(t,i.messageId,e)})}):n.sendPubData(e)})},t.prototype.checkPubsForChanges=function(s,c){var t=this,r=this;r._subscriptions.filter(function(t){return t.collections.includes(s)}).forEach(function(o){return __awaiter(t,void 0,void 0,function(){var i,e,n;return __generator(this,function(t){switch(t.label){case 0:e=null;try{index_1.default.getMainDB().model(s).simplschema.validate(c)}catch(t){e=t}return e?[4,index_1.default.getMainDB().model(s).findById(c._id)]:[3,2];case 1:c=t.sent(),t.label=2;case 2:return r._publications[o.publication].preFunction?(n=o,[4,r._publications[o.publication].preFunction(o.subscriptionData)]):[3,4];case 3:return n.preSubscriptionData=t.sent(),r._publications[o.publication].fetchFunction(c,o.preSubscriptionData)&&r.sendPubData(o),[3,5];case 4:r._publications[o.publication].ws_specific?o.clients.forEach(function(i){var t;r._publications[o.publication].fetchFunction?(t=r._publications[o.publication]).fetchFunction.apply(t,[c,i.id_user].concat(o.subscriptionData))&&r._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&r.sendPubDataOnce(t,i.messageId,o)}):r._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&r.sendPubDataOnce(t,i.messageId,o)})}):r._publications[o.publication].fetchFunction?(i=r._publications[o.publication]).fetchFunction.apply(i,[c].concat(o.subscriptionData))&&r.sendPubData(o):r.sendPubData(o),t.label=5;case 5:return[2]}})})})},t.prototype.checkSupportPubsForChanges=function(a,u){var t=this,l=this;l._subscriptions.filter(function(t){return t.collections.includes(a)}).forEach(function(r){return __awaiter(t,void 0,void 0,function(){var i,e,n,o,s,c;return __generator(this,function(t){switch(t.label){case 0:o=null;try{index_1.default.getSupportDB().model(a).simplschema.validate(u)}catch(t){o=t}return o?[4,index_1.default.getSupportDB().model(a).findById(u._id)]:[3,2];case 1:u=t.sent(),t.label=2;case 2:return r.preSubscriptionData&&l._publications[r.publication].fetchFunction(u,r.preSubscriptionData)?(l.sendPubData(r),s=r,[4,(i=l._publications[r.publication]).preFunction.apply(i,r.subscriptionData)]):[3,4];case 3:return s.preSubscriptionData=t.sent(),[2];case 4:return l._publications[r.publication].preFunction?(c=r,[4,(e=l._publications[r.publication]).preFunction.apply(e,r.subscriptionData)]):[3,6];case 5:return c.preSubscriptionData=t.sent(),l._publications[r.publication].fetchFunction(u,r.preSubscriptionData)&&l.sendPubData(r),[3,7];case 6:l._publications[r.publication].ws_specific?r.clients.forEach(function(i){var t;l._publications[r.publication].fetchFunction?(t=l._publications[r.publication]).fetchFunction.apply(t,[u,i.id_user].concat(r.subscriptionData))&&l._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&l.sendPubDataOnce(t,i.messageId,r)}):l._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&l.sendPubDataOnce(t,i.messageId,r)})}):l._publications[r.publication].fetchFunction?(n=l._publications[r.publication]).fetchFunction.apply(n,[u].concat(r.subscriptionData))&&l.sendPubData(r):l.sendPubData(r),t.label=7;case 7:return[2]}})})})},t.prototype.sendPubDataOnce=function(s,c,r){return __awaiter(this,void 0,void 0,function(){var i,e,n,o=this;return __generator(this,function(t){return(n=this)._publications[r.publication].ws_specific?(e=n._publications[r.publication].function).call.apply(e,[n,s.id_user].concat(r.subscriptionData)).then(function(t){var i={messageId:c,hasError:!1,data:t};o.sendWS(s,i)},function(t){var i={messageId:c,hasError:!0,data:t};o.sendWS(s,i)}):(i=n._publications[r.publication].function).call.apply(i,[n].concat(r.subscriptionData)).then(function(t){var i={messageId:c,hasError:!1,data:t};o.sendWS(s,i)},function(t){var i={messageId:c,hasError:!0,data:t};o.sendWS(s,i)}),[2]})})},t.prototype.sendPubData=function(e){return __awaiter(this,void 0,void 0,function(){var i,o,s=this;return __generator(this,function(t){return(i=(o=this)._publications[e.publication].function).call.apply(i,[o].concat(e.subscriptionData)).then(function(n){e.clients.forEach(function(e){o._wss.clients.forEach(function(t){if(t.id_socket===e.id_socket){var i={messageId:e.messageId,hasError:!1,data:n};s.sendWS(t,i)}})})},function(n){e.clients.forEach(function(e){o._wss.clients.forEach(function(t){if(t.id_socket===e.id_socket){var i={messageId:e.messageId,hasError:!0,data:n};s.sendWS(t,i)}})})}),[2]})})},t.prototype.sendWS=function(t,i){this._sendQueue.splice(0,0,{id_ws:t.id_socket,data:i})},t}();exports.SubscriptionManager=SubscriptionManager;
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(s,c,r,a){return new(r||(r=Promise))(function(t,i){function e(t){try{o(a.next(t))}catch(t){i(t)}}function n(t){try{o(a.throw(t))}catch(t){i(t)}}function o(i){i.done?t(i.value):new r(function(t){t(i.value)}).then(e,n)}o((a=a.apply(s,c||[])).next())})},__generator=this&&this.__generator||function(e,n){var o,s,c,t,r={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]};return t={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function i(i){return function(t){return function(i){if(o)throw new TypeError("Generator is already executing.");for(;r;)try{if(o=1,s&&(c=2&i[0]?s.return:i[0]?s.throw||((c=s.return)&&c.call(s),0):s.next)&&!(c=c.call(s,i[1])).done)return c;switch(s=0,c&&(i=[2&i[0],c.value]),i[0]){case 0:case 1:c=i;break;case 4:return r.label++,{value:i[1],done:!1};case 5:r.label++,s=i[1],i=[0];continue;case 7:i=r.ops.pop(),r.trys.pop();continue;default:if(!(c=0<(c=r.trys).length&&c[c.length-1])&&(6===i[0]||2===i[0])){r=0;continue}if(3===i[0]&&(!c||i[1]>c[0]&&i[1]<c[3])){r.label=i[1];break}if(6===i[0]&&r.label<c[1]){r.label=c[1],c=i;break}if(c&&r.label<c[2]){r.label=c[2],r.ops.push(i);break}c[2]&&r.ops.pop(),r.trys.pop();continue}i=n.call(e,r)}catch(t){i=[6,t],s=0}finally{o=c=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,t])}}};Object.defineProperty(exports,"__esModule",{value:!0});var MongoOplog=require("mongo-oplog"),logs_1=require("../publications/logs"),app_status_1=require("../publications/app-status"),app_version_1=require("../publications/app-version"),mongoose_1=require("mongoose"),files_1=require("../publications/files"),super_admin_1=require("../publications/super-admin"),active_subscription_collection_1=require("../collections/active-subscription.collection"),logged_in_users_collection_1=require("../collections/logged-in-users.collection"),cron_jobs_1=require("../publications/cron-jobs"),flags_1=require("../publications/flags"),method_calls_1=require("../publications/method-calls"),method_responses_1=require("../publications/method-responses"),support_tickets_1=require("../publications/support-tickets"),index_1=require("../index"),SubscriptionManager=function(){function t(t,i,e){var n=this;this._publications={},this._subscriptions=[],this._sendQueue=[],this._runningQueue=!1,this._mainServer=t,this.serverConfig=e,this._wss=i,super_admin_1.loadSuperAdminPublications(this),app_version_1.loadAppVersionPublications(this),app_status_1.loadAppStatusPublications(this),logs_1.loadLogPublications(this),files_1.loadFilePublications(this),cron_jobs_1.loadCronJobPublications(this),flags_1.loadFlagsPublications(this),method_calls_1.loadMethodCallsPublications(this),method_responses_1.loadMethodResponsePublications(this),support_tickets_1.loadSupportTicketPublications(this),this.tailOpLog(),index_1.default.getSupportDB()&&this.tailOpLogSupport(),setInterval(function(){if(!n._runningQueue&&n._sendQueue.length){n._runningQueue=!0;for(var t=function(t){var i=n._mainServer.getWS(n._sendQueue[t].id_ws);if(i&&i.readyState===i.OPEN){if(i.bufferedAmount<20480){var e=n._sendQueue.pop();i.send(JSON.stringify(e.data),function(t){t&&(console.log("Error on WS: ",t),n._mainServer.unsubscribeWS(i))})}}else n._sendQueue.splice(t,1)},i=n._sendQueue.length-1;0<=i;i--)t(i);n._runningQueue=!1}},50)}return t.prototype.publications=function(t){this._publications=Object.assign(this._publications,t)},t.prototype.loggedInLatency=function(e){return __awaiter(this,void 0,void 0,function(){var i;return __generator(this,function(t){switch(t.label){case 0:return[4,logged_in_users_collection_1.LoggedInUsers.findOne({id_ws:e.id_socket})];case 1:return(i=t.sent())?logged_in_users_collection_1.LoggedInUsers.updateOne({_id:i._id},{$set:{latency:e.latency}}).exec():this.unsubscribeAll(e),[2]}})})},t.prototype.subscribe=function(p,_,d){for(var b=[],t=3;t<arguments.length;t++)b[t-3]=arguments[t];return __awaiter(this,void 0,void 0,function(){var i,e,n,o,s,c,r,a,u,l;return __generator(this,function(t){switch(t.label){case 0:return(n=(e=this)._publications[d])?[3,1]:(console.error("No Publication: "+d),[2]);case 1:if(1<b.length||b[0]){if(!n.check)return console.error("No Check Function For Pub "+d),[2];if(!n.check._schema)return console.error("No Check Schema For Pub "+d),[2];for(o={},s=Object.keys(n.check._schema),c=s.filter(function(t){return!t.includes(".")}),r=0;r<b.length;r++)o[c[r]]=b[r];try{n.check.validate(o)}catch(t){if(t)return console.error("Error in Pub Check ("+d+")",t),[2]}}return(a=e._subscriptions.filter(function(t){return t.publication===d&&JSON.stringify(t.subscriptionData)===JSON.stringify(b)})[0])?a.clients.push({id_user:p.id_user,messageId:_,id_socket:p.id_socket}):e._subscriptions.push({publication:d,subscriptionData:b,collections:e.getPublicationCollections(d),clients:[{id_user:p.id_user,messageId:_,id_socket:p.id_socket}]}),a||(a=e._subscriptions.filter(function(t){return t.publication===d&&JSON.stringify(t.subscriptionData)===JSON.stringify(b)})[0]),e.sendPubDataOnce(p,_,a),!e._publications[a.publication].preFunction||a.preSubscriptionData?[3,3]:(u=a,[4,(i=e._publications[a.publication]).preFunction.apply(i,a.subscriptionData)]);case 2:u.preSubscriptionData=t.sent(),t.label=3;case 3:l=new active_subscription_collection_1.ActiveSubscriptions({date:new Date,publication:d,subData:JSON.stringify(b),collections:n.collections,clients:a.clients}),active_subscription_collection_1.ActiveSubscriptions.findOneAndUpdate({$and:[{publication:d},{subData:JSON.stringify(b)}]},{$setOnInsert:{_id:mongoose_1.Types.ObjectId().toHexString(),__v:0},$set:l},{upsert:!0}).exec(),t.label=4;case 4:return"appversion"===d&&logged_in_users_collection_1.LoggedInUsers.create({_id:mongoose_1.Types.ObjectId().toHexString(),__v:0,date:new Date,id_user:p.id_user,user:p.user,id_ws:p.id_socket}),[2]}})})},t.prototype.unsubscribe=function(s,c,r){for(var a=[],t=3;t<arguments.length;t++)a[t-3]=arguments[t];return __awaiter(this,void 0,void 0,function(){var i,e,n,o;return __generator(this,function(t){switch(t.label){case 0:return(i=this)._publications[r]?[3,1]:(console.log("No Publication: "+r),[2]);case 1:return(e=i._subscriptions.filter(function(t){return t.publication===r&&JSON.stringify(t.subscriptionData)===JSON.stringify(a)})[0])?0<=(n=e.clients.findIndex(function(t){return t.id_user===s.id_user&&t.messageId===c&&t.id_socket===s.id_socket}))?(e.clients.splice(n,1),e.clients.length?[3,2]:(i._subscriptions.splice(i._subscriptions.findIndex(function(t){return t.publication===r&&JSON.stringify(t.subscriptionData)===JSON.stringify(a)}),1),active_subscription_collection_1.ActiveSubscriptions.findOneAndRemove({$and:[{publication:r},{subData:JSON.stringify(a)}]}).exec(),[3,4])):[3,5]:[3,6];case 2:return[4,active_subscription_collection_1.ActiveSubscriptions.findOne({$and:[{publication:r},{subData:JSON.stringify(a)}]})];case 3:(o=t.sent())&&active_subscription_collection_1.ActiveSubscriptions.updateOne({_id:o._id},{$set:{clients:e.clients}}).exec(),t.label=4;case 4:return[3,5];case 5:return[3,6];case 6:return[2]}})})},t.prototype.unsubscribeAll=function(c){return __awaiter(this,void 0,void 0,function(){var n,i,o,e,s;return __generator(this,function(t){switch(t.label){case 0:return n=this,[4,logged_in_users_collection_1.LoggedInUsers.findOne({id_ws:c.id_socket})];case 1:for((i=t.sent())&&logged_in_users_collection_1.LoggedInUsers.deleteOne({_id:i._id}).exec(),o=n._subscriptions.filter(function(t){return t.clients.some(function(t){return t.id_user===c.id_user&&t.id_socket===c.id_socket})}),e=function(t){for(var i=o[t],e=i.clients.length-1;0<=e;e--)i.clients[e].id_socket===c.id_socket&&i.clients.splice(e,1);i.clients.length||n._subscriptions.splice(n._subscriptions.findIndex(function(t){return t.publication===i.publication&&JSON.stringify(t.subscriptionData)===JSON.stringify(i.subscriptionData)}),1)},s=o.length-1;0<=s;s--)e(s);return[4,active_subscription_collection_1.ActiveSubscriptions.find({"clients.id_socket":c.id_socket})];case 2:return t.sent().forEach(function(t){1===t.clients.length?active_subscription_collection_1.ActiveSubscriptions.deleteOne({_id:t._id}).exec():(t.clients.splice(t.clients.map(function(t){return t.id_socket}).indexOf(c.id_socket),1),active_subscription_collection_1.ActiveSubscriptions.updateOne({_id:t._id},{$set:{clients:t.clients}}).exec())}),[2]}})})},t.prototype.getPublicationCollections=function(t){return this._publications[t].collections},t.prototype.tailOpLog=function(){var n=this,o=this,t=MongoOplog(o.serverConfig.OPLOG_URL);t.tail().then(function(){console.log("tail started")}),t.on("insert",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),o.checkPubsForChanges(e,t.o),"cron-jobs"===e?n._mainServer.getCronManager().checkCronJobsForUpdates():"queue-methods"===e?n._mainServer.getQueueManager().runMethodQueue():"queue-responses"===e&&n._mainServer.getQueueManager().runMethodResponse()}),t.on("update",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),t.o._id=t.o2._id,o.checkPubsForChanges(e,t.o),"cron-jobs"===e&&n._mainServer.getCronManager().checkCronJobsForUpdates()}),t.on("delete",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),o.resendPubsForDelete(e),"cron-jobs"===e&&n._mainServer.getCronManager().checkCronJobsForUpdates()}),t.on("error",function(t){console.log("Error",t)}),t.on("end",function(){console.log("oplog ended"),process.exit()}),t.stop(function(){console.log("oplog stopped")})},t.prototype.tailOpLogSupport=function(){var n=this,t=MongoOplog(n.serverConfig.RESOLVEIO_SUPPORT_OPLOG_URL);t.tail().then(function(){console.log("tail started support")}),t.on("insert",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),"support-tickets"===e&&n.checkSupportPubsForChanges(e,t.o)}),t.on("update",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),t.o._id=t.o2._id,"support-tickets"===e&&n.checkSupportPubsForChanges(e,t.o)}),t.on("delete",function(t){var i=t.ns.split("."),e=i[1];i[2]&&(e+="."+i[2]),"support-tickets"===e&&n.resendPubsForDelete(e)}),t.on("error",function(t){console.log("Error support",t)}),t.on("end",function(){console.log("oplog ended support"),process.exit()}),t.stop(function(){console.log("oplog stopped support")})},t.prototype.resendPubsForDelete=function(i){var n=this;n._subscriptions.filter(function(t){return t.collections.includes(i)}).forEach(function(e){n._publications[e.publication].ws_specific?e.clients.forEach(function(i){n._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&n.sendPubDataOnce(t,i.messageId,e)})}):n.sendPubData(e)})},t.prototype.checkPubsForChanges=function(s,c){var t=this,r=this;r._subscriptions.filter(function(t){return t.collections.includes(s)}).forEach(function(o){return __awaiter(t,void 0,void 0,function(){var i,e,n;return __generator(this,function(t){switch(t.label){case 0:e=null;try{index_1.default.getMainDB().model(s).simplschema.validate(c)}catch(t){e=t}return e?[4,index_1.default.getMainDB().model(s).findById(c._id)]:[3,2];case 1:c=t.sent(),t.label=2;case 2:return r._publications[o.publication].preFunction?(n=o,[4,r._publications[o.publication].preFunction(o.subscriptionData)]):[3,4];case 3:return n.preSubscriptionData=t.sent(),r._publications[o.publication].fetchFunction(c,o.preSubscriptionData)&&r.sendPubData(o),[3,5];case 4:r._publications[o.publication].ws_specific?o.clients.forEach(function(i){var t;r._publications[o.publication].fetchFunction?(t=r._publications[o.publication]).fetchFunction.apply(t,[c,i.id_user].concat(o.subscriptionData))&&r._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&r.sendPubDataOnce(t,i.messageId,o)}):r._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&r.sendPubDataOnce(t,i.messageId,o)})}):r._publications[o.publication].fetchFunction?(i=r._publications[o.publication]).fetchFunction.apply(i,[c].concat(o.subscriptionData))&&r.sendPubData(o):r.sendPubData(o),t.label=5;case 5:return[2]}})})})},t.prototype.checkSupportPubsForChanges=function(a,u){var t=this,l=this;l._subscriptions.filter(function(t){return t.collections.includes(a)}).forEach(function(r){return __awaiter(t,void 0,void 0,function(){var i,e,n,o,s,c;return __generator(this,function(t){switch(t.label){case 0:o=null;try{index_1.default.getSupportDB().model(a).simplschema.validate(u)}catch(t){o=t}return o?[4,index_1.default.getSupportDB().model(a).findById(u._id)]:[3,2];case 1:u=t.sent(),t.label=2;case 2:return r.preSubscriptionData&&l._publications[r.publication].fetchFunction(u,r.preSubscriptionData)?(l.sendPubData(r),s=r,[4,(i=l._publications[r.publication]).preFunction.apply(i,r.subscriptionData)]):[3,4];case 3:return s.preSubscriptionData=t.sent(),[2];case 4:return l._publications[r.publication].preFunction?(c=r,[4,(e=l._publications[r.publication]).preFunction.apply(e,r.subscriptionData)]):[3,6];case 5:return c.preSubscriptionData=t.sent(),l._publications[r.publication].fetchFunction(u,r.preSubscriptionData)&&l.sendPubData(r),[3,7];case 6:l._publications[r.publication].ws_specific?r.clients.forEach(function(i){var t;l._publications[r.publication].fetchFunction?(t=l._publications[r.publication]).fetchFunction.apply(t,[u,i.id_user].concat(r.subscriptionData))&&l._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&l.sendPubDataOnce(t,i.messageId,r)}):l._wss.clients.forEach(function(t){t.id_socket===i.id_socket&&l.sendPubDataOnce(t,i.messageId,r)})}):l._publications[r.publication].fetchFunction?(n=l._publications[r.publication]).fetchFunction.apply(n,[u].concat(r.subscriptionData))&&l.sendPubData(r):l.sendPubData(r),t.label=7;case 7:return[2]}})})})},t.prototype.sendPubDataOnce=function(s,c,r){return __awaiter(this,void 0,void 0,function(){var i,e,n,o=this;return __generator(this,function(t){return(n=this)._publications[r.publication].ws_specific?(e=n._publications[r.publication].function).call.apply(e,[n,s.id_user].concat(r.subscriptionData)).then(function(t){var i={messageId:c,hasError:!1,data:t};o.sendWS(s,i)},function(t){var i={messageId:c,hasError:!0,data:t};o.sendWS(s,i)}):(i=n._publications[r.publication].function).call.apply(i,[n].concat(r.subscriptionData)).then(function(t){var i={messageId:c,hasError:!1,data:t};o.sendWS(s,i)},function(t){var i={messageId:c,hasError:!0,data:t};o.sendWS(s,i)}),[2]})})},t.prototype.sendPubData=function(e){return __awaiter(this,void 0,void 0,function(){var i,o,s=this;return __generator(this,function(t){return(i=(o=this)._publications[e.publication].function).call.apply(i,[o].concat(e.subscriptionData)).then(function(n){e.clients.forEach(function(e){o._wss.clients.forEach(function(t){if(t.id_socket===e.id_socket){var i={messageId:e.messageId,hasError:!1,data:n};s.sendWS(t,i)}})})},function(n){e.clients.forEach(function(e){o._wss.clients.forEach(function(t){if(t.id_socket===e.id_socket){var i={messageId:e.messageId,hasError:!0,data:n};s.sendWS(t,i)}})})}),[2]})})},t.prototype.sendWS=function(t,i){this._sendQueue.splice(0,0,{id_ws:t.id_socket,data:i})},t}();exports.SubscriptionManager=SubscriptionManager;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2Vycy9zdWJzY3JpcHRpb24ubWFuYWdlci50cyJdLCJuYW1lcyI6WyJNb25nb09wbG9nIiwicmVxdWlyZSIsImxvZ3NfMSIsImFwcF9zdGF0dXNfMSIsImFwcF92ZXJzaW9uXzEiLCJtb25nb29zZV8xIiwiZmlsZXNfMSIsInN1cGVyX2FkbWluXzEiLCJhY3RpdmVfc3Vic2NyaXB0aW9uX2NvbGxlY3Rpb25fMSIsImxvZ2dlZF9pbl91c2Vyc19jb2xsZWN0aW9uXzEiLCJjcm9uX2pvYnNfMSIsImZsYWdzXzEiLCJtZXRob2RfY2FsbHNfMSIsIm1ldGhvZF9yZXNwb25zZXNfMSIsInN1cHBvcnRfdGlja2V0c18xIiwiaW5kZXhfMSIsIlN1YnNjcmlwdGlvbk1hbmFnZXIiLCJtYWluU2VydmVyIiwid3NzIiwic2VydmVyQ29uZmlnIiwiX3RoaXMiLCJ0aGlzIiwiX3B1YmxpY2F0aW9ucyIsIl9zdWJzY3JpcHRpb25zIiwiX3NlbmRRdWV1ZSIsIl9ydW5uaW5nUXVldWUiLCJfbWFpblNlcnZlciIsIl93c3MiLCJsb2FkU3VwZXJBZG1pblB1YmxpY2F0aW9ucyIsImxvYWRBcHBWZXJzaW9uUHVibGljYXRpb25zIiwibG9hZEFwcFN0YXR1c1B1YmxpY2F0aW9ucyIsImxvYWRMb2dQdWJsaWNhdGlvbnMiLCJsb2FkRmlsZVB1YmxpY2F0aW9ucyIsImxvYWRDcm9uSm9iUHVibGljYXRpb25zIiwibG9hZEZsYWdzUHVibGljYXRpb25zIiwibG9hZE1ldGhvZENhbGxzUHVibGljYXRpb25zIiwibG9hZE1ldGhvZFJlc3BvbnNlUHVibGljYXRpb25zIiwibG9hZFN1cHBvcnRUaWNrZXRQdWJsaWNhdGlvbnMiLCJ0YWlsT3BMb2ciLCJkZWZhdWx0IiwiZ2V0U3VwcG9ydERCIiwidGFpbE9wTG9nU3VwcG9ydCIsInNldEludGVydmFsIiwibGVuZ3RoIiwiaSIsIndzIiwiZ2V0V1MiLCJpZF93cyIsInJlYWR5U3RhdGUiLCJPUEVOIiwiYnVmZmVyZWRBbW91bnQiLCJzZW5kSXRlbSIsInBvcCIsInNlbmQiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsImVycm9yIiwiY29uc29sZSIsImxvZyIsInVuc3Vic2NyaWJlV1MiLCJzcGxpY2UiLCJwcm90b3R5cGUiLCJwdWJsaWNhdGlvbnMiLCJtZXRob2QiLCJPYmplY3QiLCJhc3NpZ24iLCJsb2dnZWRJbkxhdGVuY3kiLCJMb2dnZWRJblVzZXJzIiwiZmluZE9uZSIsImxvZ2dlZEluVXNlciIsIl9hIiwic2VudCIsInVwZGF0ZU9uZSIsIl9pZCIsIiRzZXQiLCJsYXRlbmN5IiwiZXhlYyIsInVuc3Vic2NyaWJlQWxsIiwic3Vic2NyaWJlIiwibWVzc2FnZUlkIiwicHVibGljYXRpb24iLCJzdWJzY3JpcHRpb25EYXRhIiwiX2kiLCJhcmd1bWVudHMiLCJwdWIiLCJ0aGF0IiwiY2hlY2siLCJfc2NoZW1hIiwidmFsT2JqIiwidmFsS2V5cyIsImtleXMiLCJyb290S2V5cyIsImZpbHRlciIsImEiLCJpbmNsdWRlcyIsInZhbGlkYXRlIiwiZXJyb3JzIiwic3ViIiwiY2xpZW50cyIsInB1c2giLCJpZF91c2VyIiwiaWRfc29ja2V0IiwiY29sbGVjdGlvbnMiLCJnZXRQdWJsaWNhdGlvbkNvbGxlY3Rpb25zIiwic2VuZFB1YkRhdGFPbmNlIiwicHJlRnVuY3Rpb24iLCJwcmVTdWJzY3JpcHRpb25EYXRhIiwiX2IiLCJhcHBseSIsIl9jIiwibmV3QWN0aXZlU3ViIiwiQWN0aXZlU3Vic2NyaXB0aW9ucyIsImRhdGUiLCJEYXRlIiwic3ViRGF0YSIsImZpbmRPbmVBbmRVcGRhdGUiLCIkYW5kIiwiJHNldE9uSW5zZXJ0IiwiVHlwZXMiLCJPYmplY3RJZCIsInRvSGV4U3RyaW5nIiwiX192IiwidXBzZXJ0IiwiY3JlYXRlIiwidXNlciIsInVuc3Vic2NyaWJlIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJmaW5kT25lQW5kUmVtb3ZlIiwiYWN0aXZlU3ViIiwiZGVsZXRlT25lIiwidXNlclN1YnMiLCJzb21lIiwiYiIsImoiLCJmaW5kIiwiY2xpZW50cy5pZF9zb2NrZXQiLCJmb3JFYWNoIiwibWFwIiwiaW5kZXhPZiIsIm9wbG9nIiwidGFpbCIsInRoZW4iLCJvbiIsImRvYyIsIm5zQXJyYXkiLCJucyIsInNwbGl0IiwiY29sbGVjdGlvbiIsImNoZWNrUHVic0ZvckNoYW5nZXMiLCJvIiwiZ2V0Q3Jvbk1hbmFnZXIiLCJjaGVja0Nyb25Kb2JzRm9yVXBkYXRlcyIsImdldFF1ZXVlTWFuYWdlciIsInJ1bk1ldGhvZFF1ZXVlIiwicnVuTWV0aG9kUmVzcG9uc2UiLCJvMiIsInJlc2VuZFB1YnNGb3JEZWxldGUiLCJwcm9jZXNzIiwiZXhpdCIsInN0b3AiLCJjaGVja1N1cHBvcnRQdWJzRm9yQ2hhbmdlcyIsIndzX3NwZWNpZmljIiwiY2xpZW50Iiwic2VuZFB1YkRhdGEiLCJkb2N1bWVudCIsIl9fYXdhaXRlciIsInNjaGVtYUVycm9ycyIsImdldE1haW5EQiIsIm1vZGVsIiwiZmluZEJ5SWQiLCJmZXRjaEZ1bmN0aW9uIiwiY29uY2F0IiwiX2YiLCJfZCIsIl9lIiwic3Vic2NyaXB0aW9uIiwiZnVuY3Rpb24iLCJjYWxsIiwicmVzIiwic2VydmVyUmVzIiwiaGFzRXJyb3IiLCJzZW5kV1MiLCJlcnIiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoibzdDQUdBLElBQUFBLFdBQUFDLFFBQUEsZUFDQUMsT0FBQUQsUUFBQSx3QkFDQUUsYUFBQUYsUUFBQSw4QkFDQUcsY0FBQUgsUUFBQSwrQkFDQUksV0FBQUosUUFBQSxZQUNBSyxRQUFBTCxRQUFBLHlCQUNBTSxjQUFBTixRQUFBLCtCQUNBTyxpQ0FBQVAsUUFBQSxpREFDQVEsNkJBQUFSLFFBQUEsNkNBQ0FTLFlBQUFULFFBQUEsNkJBQ0FVLFFBQUFWLFFBQUEseUJBQ0FXLGVBQUFYLFFBQUEsZ0NBQ0FZLG1CQUFBWixRQUFBLG9DQUNBYSxrQkFBQWIsUUFBQSxtQ0FFQWMsUUFBQWQsUUFBQSxZQUVBZSxvQkFBQSxXQVlDLFNBQUFBLEVBQVlDLEVBQVlDLEVBQXVCQyxH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QUEsQ0FBQ2UsR0FBSXVGLE9BQUtJLEVBQWEvRixtQkFBa0I2RCxLQUFLLFNBQUFxQyxHQUN2R0gsRUFBYTlFLFFBQVF1QyxRQUFRLFNBQUEwQixHQUM1QjlFLEVBQUszRCxLQUFLd0UsUUFBUXVDLFFBQVEsU0FBQTdGLEdBQ3pCLEdBQUlBLEVBQWMsWUFBTXVILEVBQU85RCxVQUFXLENBQ3pDLElBQUkrRSxFQUFpQyxDQUNwQ3JHLFVBQVdvRixFQUFPcEYsVUFDbEJzRyxVQUFVLEVBQ1Y5SCxLQUFNNEgsR0FHUGhLLEVBQUttSyxPQUFPMUksRUFBSXdJLFNBSWpCLFNBQUFHLEdBQ0ZQLEVBQWE5RSxRQUFRdUMsUUFBUSxTQUFBMEIsR0FDNUI5RSxFQUFLM0QsS0FBS3dFLFFBQVF1QyxRQUFRLFNBQUE3RixHQUN6QixHQUFJQSxFQUFjLFlBQU11SCxFQUFPOUQsVUFBVyxDQUN6QyxJQUFJK0UsRUFBaUMsQ0FDcENyRyxVQUFXb0YsRUFBT3BGLFVBQ2xCc0csVUFBVSxFQUNWOUgsS0FBTWdJLEdBR1BwSyxFQUFLbUssT0FBTzFJLEVBQUl3SSxtQkFPYnJLLEVBQUE4QyxVQUFBeUgsT0FBUixTQUFlMUksRUFBZVcsR0FDN0JuQyxLQUFLRyxXQUFXcUMsT0FBTyxFQUFHLEVBQUcsQ0FDNUJkLE1BQU9GLEVBQWMsVUFDckJXLEtBQU1BLEtBR1R4QyxFQXRwQkEsR0FBYXlLLFFBQUF6SyxvQkFBQUEiLCJmaWxlIjoibWFuYWdlcnMvc3Vic2NyaXB0aW9uLm1hbmFnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2ZXJSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NlcnZlci1yZXNwb25zZS5tb2RlbCc7XG5pbXBvcnQgeyBBY3RpdmVTdWJzY3JpcHRpb25Nb2RlbCwgU3Vic2NyaXB0aW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc3Vic2NyaXB0aW9uLm1vZGVsJztcbmltcG9ydCAqIGFzIFdlYlNvY2tldCBmcm9tICd3cyc7XG5pbXBvcnQgKiBhcyBNb25nb09wbG9nIGZyb20gJ21vbmdvLW9wbG9nJztcbmltcG9ydCB7IGxvYWRMb2dQdWJsaWNhdGlvbnMgfSBmcm9tICcuLi9wdWJsaWNhdGlvbnMvbG9ncyc7XG5pbXBvcnQgeyBsb2FkQXBwU3RhdHVzUHVibGljYXRpb25zIH0gZnJvbSAnLi4vcHVibGljYXRpb25zL2FwcC1zdGF0dXMnO1xuaW1wb3J0IHsgbG9hZEFwcFZlcnNpb25QdWJsaWNhdGlvbnMgfSBmcm9tICcuLi9wdWJsaWNhdGlvbnMvYXBwLXZlcnNpb24nO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tICdtb25nb29zZSc7XG5pbXBvcnQgeyBsb2FkRmlsZVB1YmxpY2F0aW9ucyB9IGZyb20gJy4uL3B1YmxpY2F0aW9ucy9maWxlcyc7XG5pbXBvcnQgeyBsb2FkU3VwZXJBZG1pblB1YmxpY2F0aW9ucyB9IGZyb20gJy4uL3B1YmxpY2F0aW9ucy9zdXBlci1hZG1pbic7XG5pbXBvcnQgeyBBY3RpdmVTdWJzY3JpcHRpb25zIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvYWN0aXZlLXN1YnNjcmlwdGlvbi5jb2xsZWN0aW9uJztcbmltcG9ydCB7IExvZ2dlZEluVXNlcnMgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9sb2dnZWQtaW4tdXNlcnMuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBsb2FkQ3JvbkpvYlB1YmxpY2F0aW9ucyB9IGZyb20gJy4uL3B1YmxpY2F0aW9ucy9jcm9uLWpvYnMnO1xuaW1wb3J0IHsgbG9hZEZsYWdzUHVibGljYXRpb25zIH0gZnJvbSAnLi4vcHVibGljYXRpb25zL2ZsYWdzJztcbmltcG9ydCB7IGxvYWRNZXRob2RDYWxsc1B1YmxpY2F0aW9ucyB9IGZyb20gJy4uL3B1YmxpY2F0aW9ucy9tZXRob2QtY2FsbHMnO1xuaW1wb3J0IHsgbG9hZE1ldGhvZFJlc3BvbnNlUHVibGljYXRpb25zIH0gZnJvbSAnLi4vcHVibGljYXRpb25zL21ldGhvZC1yZXNwb25zZXMnO1xuaW1wb3J0IHsgbG9hZFN1cHBvcnRUaWNrZXRQdWJsaWNhdGlvbnMgfSBmcm9tICcuLi9wdWJsaWNhdGlvbnMvc3VwcG9ydC10aWNrZXRzJztcbmltcG9ydCB7IFJlc29sdmVJT01haW5TZXJ2ZXIgfSBmcm9tICcuLi9zZXJ2ZXItYXBwJztcbmltcG9ydCBSZXNvbHZlSU9TZXJ2ZXIgZnJvbSAnLi4vaW5kZXgnO1xuXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uTWFuYWdlciB7XG5cblx0cHJpdmF0ZSBfbWFpblNlcnZlcjogUmVzb2x2ZUlPTWFpblNlcnZlcjtcblx0cHJpdmF0ZSBfcHVibGljYXRpb25zOiBTdWJzY3JpcHRpb25Nb2RlbCA9IHt9O1xuXHRwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBBY3RpdmVTdWJzY3JpcHRpb25Nb2RlbFtdID0gW107XG5cdHByaXZhdGUgX3dzczogV2ViU29ja2V0LlNlcnZlcjtcblx0XG5cdHByaXZhdGUgX3NlbmRRdWV1ZSA9IFtdO1xuXHRwcml2YXRlIF9ydW5uaW5nUXVldWUgPSBmYWxzZTtcblxuXHRwcml2YXRlIHNlcnZlckNvbmZpZztcblxuXHRjb25zdHJ1Y3RvcihtYWluU2VydmVyLCB3c3M6IFdlYlNvY2tldC5TZXJ2ZXIsIHNlcnZlckNvbmZpZykge1xuXHRcdHRoaXMuX21haW5TZXJ2ZXIgPSBtYWluU2VydmVyO1xuXG5cdFx0dGhpcy5zZXJ2ZXJDb25maWcgPSBzZXJ2ZXJDb25maWc7XG5cdFx0dGhpcy5fd3NzID0gd3NzO1xuXG5cdFx0Ly8gUHVibGljYXRpb25zXG5cdFx0bG9hZFN1cGVyQWRtaW5QdWJsaWNhdGlvbnModGhpcyk7XG5cdFx0bG9hZEFwcFZlcnNpb25QdWJsaWNhdGlvbnModGhpcyk7XG5cdFx0bG9hZEFwcFN0YXR1c1B1YmxpY2F0aW9ucyh0aGlzKTtcblx0XHRsb2FkTG9nUHVibGljYXRpb25zKHRoaXMpO1xuXHRcdGxvYWRGaWxlUHVibGljYXRpb25zKHRoaXMpO1xuXHRcdGxvYWRDcm9uSm9iUHVibGljYXRpb25zKHRoaXMpO1xuXHRcdGxvYWRGbGFnc1B1YmxpY2F0aW9ucyh0aGlzKTtcblx0XHRsb2FkTWV0aG9kQ2FsbHNQdWJsaWNhdGlvbnModGhpcyk7XG5cdFx0bG9hZE1ldGhvZFJlc3BvbnNlUHVibGljYXRpb25zKHRoaXMpO1xuXHRcdGxvYWRTdXBwb3J0VGlja2V0UHVibGljYXRpb25zKHRoaXMpO1xuXG5cdFx0dGhpcy50YWlsT3BMb2coKTtcblxuXHRcdGlmIChSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkpIHtcblx0XHRcdHRoaXMudGFpbE9wTG9nU3VwcG9ydCgpO1xuXHRcdH1cblxuXHRcdHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdGlmICghdGhpcy5fcnVubmluZ1F1ZXVlKSB7XG5cdFx0XHRcdGlmICh0aGlzLl9zZW5kUXVldWUubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5fcnVubmluZ1F1ZXVlID0gdHJ1ZTtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gdGhpcy5fc2VuZFF1ZXVlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRcdFx0XHRsZXQgd3MgPSB0aGlzLl9tYWluU2VydmVyLmdldFdTKHRoaXMuX3NlbmRRdWV1ZVtpXS5pZF93cyk7XG5cdFx0XHRcdFx0XHRpZiAod3MgJiYgd3MucmVhZHlTdGF0ZSA9PT0gd3MuT1BFTikge1xuXHRcdFx0XHRcdFx0XHRpZiAod3MuYnVmZmVyZWRBbW91bnQgPCAyMDQ4MCkge1xuXHRcdFx0XHRcdFx0XHRcdGxldCBzZW5kSXRlbSA9IHRoaXMuX3NlbmRRdWV1ZS5wb3AoKTtcblx0XHRcdFx0XHRcdFx0XHR3cy5zZW5kKEpTT04uc3RyaW5naWZ5KHNlbmRJdGVtLmRhdGEpLCAoZXJyb3IpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXJyb3Igb24gV1M6ICcsIGVycm9yKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5fbWFpblNlcnZlci51bnN1YnNjcmliZVdTKHdzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX3NlbmRRdWV1ZS5zcGxpY2UoaSwgMSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5fcnVubmluZ1F1ZXVlID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXHRcdH0sIDUwKTtcblx0fVxuXG5cdC8vIEFkZCBhbGwgZmlsZXMgdG8gcHVibGljYXRpb25zIHByaXZhdGUgb2JqZWN0XG5cdHB1YmxpYyBwdWJsaWNhdGlvbnMobWV0aG9kOiBTdWJzY3JpcHRpb25Nb2RlbCkge1xuXHRcdHRoaXMuX3B1YmxpY2F0aW9ucyA9IE9iamVjdC5hc3NpZ24odGhpcy5fcHVibGljYXRpb25zLCBtZXRob2QpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGxvZ2dlZEluTGF0ZW5jeSh3czogV2ViU29ja2V0KSB7XG5cdFx0bGV0IGxvZ2dlZEluVXNlciA9IGF3YWl0IExvZ2dlZEluVXNlcnMuZmluZE9uZSh7aWRfd3M6IHdzWydpZF9zb2NrZXQnXX0pO1xuXG5cdFx0aWYgKGxvZ2dlZEluVXNlcikge1xuXHRcdFx0TG9nZ2VkSW5Vc2Vycy51cGRhdGVPbmUoe19pZDogbG9nZ2VkSW5Vc2VyLl9pZH0sIHskc2V0OiB7bGF0ZW5jeTogd3NbJ2xhdGVuY3knXX19KS5leGVjKCk7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0dGhpcy51bnN1YnNjcmliZUFsbCh3cyk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gU3Vic2NyaWJlIHRvIHB1YmxpY2F0aW9uXG5cdHB1YmxpYyBhc3luYyBzdWJzY3JpYmUod3M6IFdlYlNvY2tldCwgbWVzc2FnZUlkOiBudW1iZXIsIHB1YmxpY2F0aW9uOiBzdHJpbmcsIC4uLnN1YnNjcmlwdGlvbkRhdGE6IGFueVtdKSB7XG5cdFx0bGV0IHRoYXQgPSB0aGlzO1xuXG5cdFx0bGV0IHB1YiA9IHRoYXQuX3B1YmxpY2F0aW9uc1twdWJsaWNhdGlvbl07XG5cblx0XHRpZiAoIXB1Yikge1xuXHRcdFx0Y29uc29sZS5lcnJvcignTm8gUHVibGljYXRpb246ICcgKyBwdWJsaWNhdGlvbik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0aWYgKHN1YnNjcmlwdGlvbkRhdGEubGVuZ3RoID4gMSB8fCBzdWJzY3JpcHRpb25EYXRhWzBdKSB7XG5cdFx0XHRcdGlmICghcHViLmNoZWNrKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcignTm8gQ2hlY2sgRnVuY3Rpb24gRm9yIFB1YiAnICsgcHVibGljYXRpb24pO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICghcHViLmNoZWNrLl9zY2hlbWEpIHtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdObyBDaGVjayBTY2hlbWEgRm9yIFB1YiAnICsgcHVibGljYXRpb24pO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRsZXQgdmFsT2JqID0ge307XG5cdFx0XHRcdFx0bGV0IHZhbEtleXMgPSBPYmplY3Qua2V5cyhwdWIuY2hlY2suX3NjaGVtYSk7XG5cblx0XHRcdFx0XHRsZXQgcm9vdEtleXMgPSB2YWxLZXlzLmZpbHRlcihhID0+ICFhLmluY2x1ZGVzKCcuJykpO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc3Vic2NyaXB0aW9uRGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0dmFsT2JqW3Jvb3RLZXlzW2ldXSA9IHN1YnNjcmlwdGlvbkRhdGFbaV07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHB1Yi5jaGVjay52YWxpZGF0ZSh2YWxPYmopO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXRjaCAoZXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRpZiAoZXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIFB1YiBDaGVjayAoJyArIHB1YmxpY2F0aW9uICsgJyknLCBlcnJvcnMpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGxldCBzdWIgPSB0aGF0Ll9zdWJzY3JpcHRpb25zLmZpbHRlcihhID0+IGEucHVibGljYXRpb24gPT09IHB1YmxpY2F0aW9uICYmIEpTT04uc3RyaW5naWZ5KGEuc3Vic2NyaXB0aW9uRGF0YSkgPT09IEpTT04uc3RyaW5naWZ5KHN1YnNjcmlwdGlvbkRhdGEpKVswXTtcblxuXHRcdFx0Ly8gSWYgc3ViIGZvdW5kIChhbm90aGVyIHVzZXIgd2F0Y2hpbmcgc2FtZSBkYXRhKSwgYWRkIGNsaWVudCB0byBzYW1lIHN1YlxuXHRcdFx0aWYgKHN1Yikge1xuXHRcdFx0XHRzdWIuY2xpZW50cy5wdXNoKHtcblx0XHRcdFx0XHRpZF91c2VyOiB3c1snaWRfdXNlciddLFxuXHRcdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRcdGlkX3NvY2tldDogd3NbJ2lkX3NvY2tldCddXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgc3ViIG5vdCBmb3VuZCwgY3JlYXRlIG5ldyBzdWJcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHR0aGF0Ll9zdWJzY3JpcHRpb25zLnB1c2goe1xuXHRcdFx0XHRcdHB1YmxpY2F0aW9uOiBwdWJsaWNhdGlvbixcblx0XHRcdFx0XHRzdWJzY3JpcHRpb25EYXRhOiBzdWJzY3JpcHRpb25EYXRhLFxuXHRcdFx0XHRcdGNvbGxlY3Rpb25zOiB0aGF0LmdldFB1YmxpY2F0aW9uQ29sbGVjdGlvbnMocHVibGljYXRpb24pLFxuXHRcdFx0XHRcdGNsaWVudHM6IFt7XG5cdFx0XHRcdFx0XHRpZF91c2VyOiB3c1snaWRfdXNlciddLFxuXHRcdFx0XHRcdFx0bWVzc2FnZUlkOiBtZXNzYWdlSWQsXG5cdFx0XHRcdFx0XHRpZF9zb2NrZXQ6IHdzWydpZF9zb2NrZXQnXVxuXHRcdFx0XHRcdH1dXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXN1Yikge1xuXHRcdFx0XHRzdWIgPSB0aGF0Ll9zdWJzY3JpcHRpb25zLmZpbHRlcihhID0+IGEucHVibGljYXRpb24gPT09IHB1YmxpY2F0aW9uICYmIEpTT04uc3RyaW5naWZ5KGEuc3Vic2NyaXB0aW9uRGF0YSkgPT09IEpTT04uc3RyaW5naWZ5KHN1YnNjcmlwdGlvbkRhdGEpKVswXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2VuZCBwdWIgZGF0YSB0byBjbGllbnQgd2hvIGp1c3Qgc3Vic2NyaWJlZCBvbmx5LCBkb24ndCB3YW50IHRvIHNlbmQgdG8gZXhpc3RpbmcgY2xpZW50cyBzaW5jZSBub3RoaW5nIGhhcyBjaGFuZ2VkXG5cdFx0XHR0aGF0LnNlbmRQdWJEYXRhT25jZSh3cywgbWVzc2FnZUlkLCBzdWIpO1xuXG5cdFx0XHRpZiAodGhhdC5fcHVibGljYXRpb25zW3N1Yi5wdWJsaWNhdGlvbl0ucHJlRnVuY3Rpb24gJiYgIXN1Yi5wcmVTdWJzY3JpcHRpb25EYXRhKSB7XG5cdFx0XHRcdHN1Yi5wcmVTdWJzY3JpcHRpb25EYXRhID0gYXdhaXQgdGhhdC5fcHVibGljYXRpb25zW3N1Yi5wdWJsaWNhdGlvbl0ucHJlRnVuY3Rpb24oLi4uc3ViLnN1YnNjcmlwdGlvbkRhdGEpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgbmV3QWN0aXZlU3ViID0gbmV3IEFjdGl2ZVN1YnNjcmlwdGlvbnMoe1xuXHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRwdWJsaWNhdGlvbjogcHVibGljYXRpb24sXG5cdFx0XHRcdHN1YkRhdGE6IEpTT04uc3RyaW5naWZ5KHN1YnNjcmlwdGlvbkRhdGEpLFxuXHRcdFx0XHRjb2xsZWN0aW9uczogcHViLmNvbGxlY3Rpb25zLFxuXHRcdFx0XHRjbGllbnRzOiBzdWIuY2xpZW50c1xuXHRcdFx0fSk7XG5cblx0XHRcdEFjdGl2ZVN1YnNjcmlwdGlvbnMuZmluZE9uZUFuZFVwZGF0ZSh7XG5cdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHR7cHVibGljYXRpb246IHB1YmxpY2F0aW9ufSxcblx0XHRcdFx0XHR7c3ViRGF0YTogSlNPTi5zdHJpbmdpZnkoc3Vic2NyaXB0aW9uRGF0YSl9XG5cdFx0XHRcdF1cblx0XHRcdH0sIHskc2V0T25JbnNlcnQ6IHtfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSwgX192OiAwfSwgJHNldDogbmV3QWN0aXZlU3VifSwge3Vwc2VydDogdHJ1ZX0pLmV4ZWMoKTtcblx0XHR9XG5cblx0XHRpZiAocHVibGljYXRpb24gPT09ICdhcHB2ZXJzaW9uJykge1xuXHRcdFx0TG9nZ2VkSW5Vc2Vycy5jcmVhdGUoe1xuXHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0X192OiAwLFxuXHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRpZF91c2VyOiB3c1snaWRfdXNlciddLFxuXHRcdFx0XHR1c2VyOiB3c1sndXNlciddLFxuXHRcdFx0XHRpZF93czogd3NbJ2lkX3NvY2tldCddXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvLyBVbnN1YnNjcmliZSBmcm9tIHB1YmxpY2F0aW9uIFxuXHRwdWJsaWMgYXN5bmMgdW5zdWJzY3JpYmUod3M6IFdlYlNvY2tldCwgbWVzc2FnZUlkOiBudW1iZXIsIHB1YmxpY2F0aW9uOiBzdHJpbmcsIC4uLnN1YnNjcmlwdGlvbkRhdGE6IGFueVtdKSB7XG5cdFx0bGV0IHRoYXQgPSB0aGlzO1xuXG5cdFx0Ly8gY29uc29sZS5sb2coJ0JlZm9yZScpO1xuXHRcdC8vIGNvbnNvbGUuZGlyKHRoaXMuX3N1YnNjcmlwdGlvbnMubWFwKGEgPT4gYS5wdWJsaWNhdGlvbikpO1xuXG5cdFx0aWYgKCF0aGF0Ll9wdWJsaWNhdGlvbnNbcHVibGljYXRpb25dKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnTm8gUHVibGljYXRpb246ICcgKyBwdWJsaWNhdGlvbik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0bGV0IHN1YiA9IHRoYXQuX3N1YnNjcmlwdGlvbnMuZmlsdGVyKGEgPT4gYS5wdWJsaWNhdGlvbiA9PT0gcHVibGljYXRpb24gJiYgSlNPTi5zdHJpbmdpZnkoYS5zdWJzY3JpcHRpb25EYXRhKSA9PT0gSlNPTi5zdHJpbmdpZnkoc3Vic2NyaXB0aW9uRGF0YSkpWzBdO1xuXG5cdFx0XHRpZiAoc3ViKSB7XG5cdFx0XHRcdGxldCBpbmRleCA9IHN1Yi5jbGllbnRzLmZpbmRJbmRleChhID0+IGEuaWRfdXNlciA9PT0gd3NbJ2lkX3VzZXInXSAmJiBhLm1lc3NhZ2VJZCA9PT0gbWVzc2FnZUlkICYmIGEuaWRfc29ja2V0ID09PSB3c1snaWRfc29ja2V0J10pO1xuXHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xuXHRcdFx0XHRcdHN1Yi5jbGllbnRzLnNwbGljZShpbmRleCwgMSk7XG5cblx0XHRcdFx0XHRpZiAoIXN1Yi5jbGllbnRzLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhhdC5fc3Vic2NyaXB0aW9ucy5zcGxpY2UodGhhdC5fc3Vic2NyaXB0aW9ucy5maW5kSW5kZXgoYSA9PiBhLnB1YmxpY2F0aW9uID09PSBwdWJsaWNhdGlvbiAmJiBKU09OLnN0cmluZ2lmeShhLnN1YnNjcmlwdGlvbkRhdGEpID09PSBKU09OLnN0cmluZ2lmeShzdWJzY3JpcHRpb25EYXRhKSksIDEpO1xuXG5cdFx0XHRcdFx0XHRBY3RpdmVTdWJzY3JpcHRpb25zLmZpbmRPbmVBbmRSZW1vdmUoe1xuXHRcdFx0XHRcdFx0XHQkYW5kOiBbXG5cdFx0XHRcdFx0XHRcdFx0e3B1YmxpY2F0aW9uOiBwdWJsaWNhdGlvbn0sXG5cdFx0XHRcdFx0XHRcdFx0e3N1YkRhdGE6IEpTT04uc3RyaW5naWZ5KHN1YnNjcmlwdGlvbkRhdGEpfVxuXHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHR9KS5leGVjKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0bGV0IGFjdGl2ZVN1YiA9IGF3YWl0IEFjdGl2ZVN1YnNjcmlwdGlvbnMuZmluZE9uZSh7XG5cdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHR7cHVibGljYXRpb246IHB1YmxpY2F0aW9ufSxcblx0XHRcdFx0XHRcdFx0XHR7c3ViRGF0YTogSlNPTi5zdHJpbmdpZnkoc3Vic2NyaXB0aW9uRGF0YSl9XG5cdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRpZiAoYWN0aXZlU3ViKSB7XG5cdFx0XHRcdFx0XHRcdEFjdGl2ZVN1YnNjcmlwdGlvbnMudXBkYXRlT25lKHtfaWQ6IGFjdGl2ZVN1Yi5faWR9LCB7JHNldDoge2NsaWVudHM6IHN1Yi5jbGllbnRzfX0pLmV4ZWMoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ0RpZCBub3QgZmluZCB1c2VyIG9uIHN1YiB0byB1bnN1YicpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ0RpZCBub3Qgc3ViIG9uIHVuc3Vic2NyaWJlJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gVW5zdWJzY3JpYmUgZnJvbSBwdWJsaWNhdGlvblxuXHRwdWJsaWMgYXN5bmMgdW5zdWJzY3JpYmVBbGwod3M6IFdlYlNvY2tldCkge1xuXHRcdGxldCB0aGF0ID0gdGhpcztcblxuXHRcdC8vIGNvbnNvbGUubG9nKCdCZWZvcmUnKTtcblx0XHQvLyBjb25zb2xlLmRpcih0aGlzLl9zdWJzY3JpcHRpb25zLm1hcChhID0+IGEucHVibGljYXRpb24pKTtcblxuXHRcdGxldCBsb2dnZWRJblVzZXIgPSBhd2FpdCBMb2dnZWRJblVzZXJzLmZpbmRPbmUoe2lkX3dzOiB3c1snaWRfc29ja2V0J119KTtcblxuXHRcdGlmIChsb2dnZWRJblVzZXIpIHtcblx0XHRcdExvZ2dlZEluVXNlcnMuZGVsZXRlT25lKHtfaWQ6IGxvZ2dlZEluVXNlci5faWR9KS5leGVjKCk7XG5cdFx0fVxuXG5cdFx0bGV0IHVzZXJTdWJzID0gdGhhdC5fc3Vic2NyaXB0aW9ucy5maWx0ZXIoYSA9PiBhLmNsaWVudHMuc29tZShiID0+IGIuaWRfdXNlciA9PT0gd3NbJ2lkX3VzZXInXSAmJiBiLmlkX3NvY2tldCA9PT0gd3NbJ2lkX3NvY2tldCddKSk7XG5cblx0XHRmb3IgKGxldCBpID0gdXNlclN1YnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdGxldCBzdWIgPSB1c2VyU3Vic1tpXTtcblxuXHRcdFx0Zm9yIChsZXQgaiA9IHN1Yi5jbGllbnRzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG5cdFx0XHRcdGlmIChzdWIuY2xpZW50c1tqXS5pZF9zb2NrZXQgPT09IHdzWydpZF9zb2NrZXQnXSkge1xuXHRcdFx0XHRcdHN1Yi5jbGllbnRzLnNwbGljZShqLCAxKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXN1Yi5jbGllbnRzLmxlbmd0aCkge1xuXHRcdFx0XHR0aGF0Ll9zdWJzY3JpcHRpb25zLnNwbGljZSh0aGF0Ll9zdWJzY3JpcHRpb25zLmZpbmRJbmRleChhID0+IGEucHVibGljYXRpb24gPT09IHN1Yi5wdWJsaWNhdGlvbiAmJiBKU09OLnN0cmluZ2lmeShhLnN1YnNjcmlwdGlvbkRhdGEpID09PSBKU09OLnN0cmluZ2lmeShzdWIuc3Vic2NyaXB0aW9uRGF0YSkpLCAxKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRsZXQgYWN0aXZlU3VicyA9IGF3YWl0IEFjdGl2ZVN1YnNjcmlwdGlvbnMuZmluZCh7J2NsaWVudHMuaWRfc29ja2V0Jzogd3NbJ2lkX3NvY2tldCddfSk7XG5cblx0XHRhY3RpdmVTdWJzLmZvckVhY2goc3ViID0+IHtcblx0XHRcdGlmIChzdWIuY2xpZW50cy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0QWN0aXZlU3Vic2NyaXB0aW9ucy5kZWxldGVPbmUoe19pZDogc3ViLl9pZH0pLmV4ZWMoKTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRzdWIuY2xpZW50cy5zcGxpY2Uoc3ViLmNsaWVudHMubWFwKGEgPT4gYS5pZF9zb2NrZXQpLmluZGV4T2Yod3NbJ2lkX3NvY2tldCddKSwgMSk7XG5cdFx0XHRcdEFjdGl2ZVN1YnNjcmlwdGlvbnMudXBkYXRlT25lKHtfaWQ6IHN1Yi5faWR9LCB7JHNldDoge2NsaWVudHM6IHN1Yi5jbGllbnRzfX0pLmV4ZWMoKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8vIGNvbnNvbGUubG9nKCdBZnRlcicpO1xuXHRcdC8vIGNvbnNvbGUuZGlyKHRoaXMuX3N1YnNjcmlwdGlvbnMubWFwKGEgPT4gYS5wdWJsaWNhdGlvbikpO1xuXHR9XG5cblx0Ly8gR2V0IHB1YmxpY2F0aW9uIGNvbGxlY3Rpb25cblx0cHJpdmF0ZSBnZXRQdWJsaWNhdGlvbkNvbGxlY3Rpb25zKHB1YmxpY2F0aW9uOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVibGljYXRpb25zW3B1YmxpY2F0aW9uXS5jb2xsZWN0aW9ucztcblx0fVxuXG5cdC8vIFdhdGNoICh0YWlsKSBNb25nbydzIG9wZXJhdGlvbiBsb2cgb24gdGhlIGVudGlyZSBkYXRhYmFzZSAoYWxsIGluc2VydC9tb2RpZnkvZGVsZXRlIHdpbGwgdHJpZ2dlciB0aGlzIGZ1bmN0aW9uKVxuXHRwcml2YXRlIHRhaWxPcExvZygpIHtcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHRjb25zdCBvcGxvZyA9IE1vbmdvT3Bsb2codGhhdC5zZXJ2ZXJDb25maWdbJ09QTE9HX1VSTCddKTtcblx0XHRvcGxvZy50YWlsKCkudGhlbigoKSA9PiB7XG5cdFx0XHRjb25zb2xlLmxvZygndGFpbCBzdGFydGVkJyk7XHRcblx0XHR9KTtcblx0XHRcblx0XHRvcGxvZy5vbignaW5zZXJ0JywgZG9jID0+IHtcdFx0XHRcblx0XHRcdGxldCBuc0FycmF5ID0gZG9jLm5zLnNwbGl0KCcuJyk7XG5cdFx0XHRsZXQgY29sbGVjdGlvbiA9IG5zQXJyYXlbMV07XG5cblx0XHRcdGlmIChuc0FycmF5WzJdKSB7XG5cdFx0XHRcdGNvbGxlY3Rpb24gKz0gJy4nICsgbnNBcnJheVsyXTtcblx0XHRcdH1cblxuXHRcdFx0dGhhdC5jaGVja1B1YnNGb3JDaGFuZ2VzKGNvbGxlY3Rpb24sIGRvYy5vKTtcblxuXHRcdFx0aWYgKGNvbGxlY3Rpb24gPT09ICdjcm9uLWpvYnMnKSB7XG5cdFx0XHRcdHRoaXMuX21haW5TZXJ2ZXIuZ2V0Q3Jvbk1hbmFnZXIoKS5jaGVja0Nyb25Kb2JzRm9yVXBkYXRlcygpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAoY29sbGVjdGlvbiA9PT0gJ3F1ZXVlLW1ldGhvZHMnKSB7XG5cdFx0XHRcdHRoaXMuX21haW5TZXJ2ZXIuZ2V0UXVldWVNYW5hZ2VyKCkucnVuTWV0aG9kUXVldWUoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKGNvbGxlY3Rpb24gPT09ICdxdWV1ZS1yZXNwb25zZXMnKSB7XG5cdFx0XHRcdHRoaXMuX21haW5TZXJ2ZXIuZ2V0UXVldWVNYW5hZ2VyKCkucnVuTWV0aG9kUmVzcG9uc2UoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRcblx0XHRvcGxvZy5vbigndXBkYXRlJywgZG9jID0+IHtcdFx0XHRcblx0XHRcdGxldCBuc0FycmF5ID0gZG9jLm5zLnNwbGl0KCcuJyk7XG5cdFx0XHRsZXQgY29sbGVjdGlvbiA9IG5zQXJyYXlbMV07XG5cblx0XHRcdGlmIChuc0FycmF5WzJdKSB7XG5cdFx0XHRcdGNvbGxlY3Rpb24gKz0gJy4nICsgbnNBcnJheVsyXTtcblx0XHRcdH1cblxuXHRcdFx0ZG9jLm9bJ19pZCddID0gZG9jLm8yWydfaWQnXTtcblxuXHRcdFx0dGhhdC5jaGVja1B1YnNGb3JDaGFuZ2VzKGNvbGxlY3Rpb24sIGRvYy5vKTtcblxuXHRcdFx0aWYgKGNvbGxlY3Rpb24gPT09ICdjcm9uLWpvYnMnKSB7XG5cdFx0XHRcdHRoaXMuX21haW5TZXJ2ZXIuZ2V0Q3Jvbk1hbmFnZXIoKS5jaGVja0Nyb25Kb2JzRm9yVXBkYXRlcygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdFxuXHRcdG9wbG9nLm9uKCdkZWxldGUnLCBkb2MgPT4ge1xuXHRcdFx0bGV0IG5zQXJyYXkgPSBkb2MubnMuc3BsaXQoJy4nKTtcblx0XHRcdGxldCBjb2xsZWN0aW9uID0gbnNBcnJheVsxXTtcblxuXHRcdFx0aWYgKG5zQXJyYXlbMl0pIHtcblx0XHRcdFx0Y29sbGVjdGlvbiArPSAnLicgKyBuc0FycmF5WzJdO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGF0LnJlc2VuZFB1YnNGb3JEZWxldGUoY29sbGVjdGlvbik7XG5cblx0XHRcdGlmIChjb2xsZWN0aW9uID09PSAnY3Jvbi1qb2JzJykge1xuXHRcdFx0XHR0aGlzLl9tYWluU2VydmVyLmdldENyb25NYW5hZ2VyKCkuY2hlY2tDcm9uSm9ic0ZvclVwZGF0ZXMoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRcblx0XHRvcGxvZy5vbignZXJyb3InLCBlcnJvciA9PiB7XG5cdFx0XHRjb25zb2xlLmxvZygnRXJyb3InLCBlcnJvcik7XG5cdFx0fSk7XG5cdFx0XG5cdFx0b3Bsb2cub24oJ2VuZCcsICgpID0+IHtcblx0XHRcdGNvbnNvbGUubG9nKCdvcGxvZyBlbmRlZCcpO1xuXG5cdFx0XHRwcm9jZXNzLmV4aXQoKTtcblx0XHR9KTtcblxuXHRcdG9wbG9nLnN0b3AoKCkgPT4ge1xuXHRcdFx0Y29uc29sZS5sb2coJ29wbG9nIHN0b3BwZWQnKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgdGFpbE9wTG9nU3VwcG9ydCgpIHtcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHRjb25zdCBvcGxvZyA9IE1vbmdvT3Bsb2codGhhdC5zZXJ2ZXJDb25maWdbJ1JFU09MVkVJT19TVVBQT1JUX09QTE9HX1VSTCddKTtcblx0XHRvcGxvZy50YWlsKCkudGhlbigoKSA9PiB7XG5cdFx0XHRjb25zb2xlLmxvZygndGFpbCBzdGFydGVkIHN1cHBvcnQnKTtcdFxuXHRcdH0pO1xuXHRcdFxuXHRcdG9wbG9nLm9uKCdpbnNlcnQnLCBkb2MgPT4ge1x0XHRcdFxuXHRcdFx0bGV0IG5zQXJyYXkgPSBkb2MubnMuc3BsaXQoJy4nKTtcblx0XHRcdGxldCBjb2xsZWN0aW9uID0gbnNBcnJheVsxXTtcblxuXHRcdFx0aWYgKG5zQXJyYXlbMl0pIHtcblx0XHRcdFx0Y29sbGVjdGlvbiArPSAnLicgKyBuc0FycmF5WzJdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY29sbGVjdGlvbiA9PT0gJ3N1cHBvcnQtdGlja2V0cycpIHtcblx0XHRcdFx0dGhhdC5jaGVja1N1cHBvcnRQdWJzRm9yQ2hhbmdlcyhjb2xsZWN0aW9uLCBkb2Mubyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0XG5cdFx0b3Bsb2cub24oJ3VwZGF0ZScsIGRvYyA9PiB7XHRcdFx0XG5cdFx0XHRsZXQgbnNBcnJheSA9IGRvYy5ucy5zcGxpdCgnLicpO1xuXHRcdFx0bGV0IGNvbGxlY3Rpb24gPSBuc0FycmF5WzFdO1xuXG5cdFx0XHRpZiAobnNBcnJheVsyXSkge1xuXHRcdFx0XHRjb2xsZWN0aW9uICs9ICcuJyArIG5zQXJyYXlbMl07XG5cdFx0XHR9XG5cblx0XHRcdGRvYy5vWydfaWQnXSA9IGRvYy5vMlsnX2lkJ107XG5cblx0XHRcdGlmIChjb2xsZWN0aW9uID09PSAnc3VwcG9ydC10aWNrZXRzJykge1xuXHRcdFx0XHR0aGF0LmNoZWNrU3VwcG9ydFB1YnNGb3JDaGFuZ2VzKGNvbGxlY3Rpb24sIGRvYy5vKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRcblx0XHRvcGxvZy5vbignZGVsZXRlJywgZG9jID0+IHtcblx0XHRcdGxldCBuc0FycmF5ID0gZG9jLm5zLnNwbGl0KCcuJyk7XG5cdFx0XHRsZXQgY29sbGVjdGlvbiA9IG5zQXJyYXlbMV07XG5cblx0XHRcdGlmIChuc0FycmF5WzJdKSB7XG5cdFx0XHRcdGNvbGxlY3Rpb24gKz0gJy4nICsgbnNBcnJheVsyXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGNvbGxlY3Rpb24gPT09ICdzdXBwb3J0LXRpY2tldHMnKSB7XG5cdFx0XHRcdHRoYXQucmVzZW5kUHVic0ZvckRlbGV0ZShjb2xsZWN0aW9uKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRcblx0XHRvcGxvZy5vbignZXJyb3InLCBlcnJvciA9PiB7XG5cdFx0XHRjb25zb2xlLmxvZygnRXJyb3Igc3VwcG9ydCcsIGVycm9yKTtcblx0XHR9KTtcblx0XHRcblx0XHRvcGxvZy5vbignZW5kJywgKCkgPT4ge1xuXHRcdFx0Y29uc29sZS5sb2coJ29wbG9nIGVuZGVkIHN1cHBvcnQnKTtcblxuXHRcdFx0cHJvY2Vzcy5leGl0KCk7XG5cdFx0fSk7XG5cblx0XHRvcGxvZy5zdG9wKCgpID0+IHtcblx0XHRcdGNvbnNvbGUubG9nKCdvcGxvZyBzdG9wcGVkIHN1cHBvcnQnKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgcmVzZW5kUHVic0ZvckRlbGV0ZShjb2xsZWN0aW9uOiBzdHJpbmcpIHtcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHR0aGF0Ll9zdWJzY3JpcHRpb25zLmZpbHRlcihhID0+IGEuY29sbGVjdGlvbnMuaW5jbHVkZXMoY29sbGVjdGlvbikpLmZvckVhY2goc3ViID0+IHtcblx0XHRcdGlmICh0aGF0Ll9wdWJsaWNhdGlvbnNbc3ViLnB1YmxpY2F0aW9uXS53c19zcGVjaWZpYykge1xuXHRcdFx0XHRzdWIuY2xpZW50cy5mb3JFYWNoKGNsaWVudCA9PiB7XG5cdFx0XHRcdFx0dGhhdC5fd3NzLmNsaWVudHMuZm9yRWFjaCh3cyA9PiB7XG5cdFx0XHRcdFx0XHRpZiAod3NbJ2lkX3NvY2tldCddID09PSBjbGllbnQuaWRfc29ja2V0KSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuc2VuZFB1YkRhdGFPbmNlKHdzLCBjbGllbnQubWVzc2FnZUlkLCBzdWIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHR0aGF0LnNlbmRQdWJEYXRhKHN1Yik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvLyBEb2N1bWVudDogSW5zZXJ0ZWQvTW9kaWZpZWQvRGVsZXRlZCBEb2N1bWVudFxuXHQvLyBDb2xsZWN0aW9uOiBDb2xsZWN0aW9uIERvY3VtZW50IExpdmVzIEluXG5cdC8vIENoZWNrIHRvIHNlZSBpZiBhbnkgcHVicyBuZWVkIHRvIHJlZmV0Y2ggZHVlIHRvIE1vbmdvIG9wZXJhdGlvblxuXHRwcml2YXRlIGNoZWNrUHVic0ZvckNoYW5nZXMoY29sbGVjdGlvbjogc3RyaW5nLCBkb2N1bWVudDogT2JqZWN0KSB7XG5cdFx0bGV0IHRoYXQgPSB0aGlzO1xuXG5cdFx0dGhhdC5fc3Vic2NyaXB0aW9ucy5maWx0ZXIoYSA9PiBhLmNvbGxlY3Rpb25zLmluY2x1ZGVzKGNvbGxlY3Rpb24pKS5mb3JFYWNoKGFzeW5jIHN1YiA9PiB7XG5cdFx0XHRsZXQgc2NoZW1hRXJyb3JzID0gbnVsbDtcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pWydzaW1wbHNjaGVtYSddLnZhbGlkYXRlKGRvY3VtZW50KTtcblx0XHRcdH1cblx0XHRcdGNhdGNoIChlcnJvcnMpIHtcblx0XHRcdFx0c2NoZW1hRXJyb3JzID0gZXJyb3JzO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc2NoZW1hRXJyb3JzKSB7XG5cdFx0XHRcdGRvY3VtZW50ID0gYXdhaXQgUmVzb2x2ZUlPU2VydmVyLmdldE1haW5EQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmRCeUlkKGRvY3VtZW50WydfaWQnXSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGF0Ll9wdWJsaWNhdGlvbnNbc3ViLnB1YmxpY2F0aW9uXS5wcmVGdW5jdGlvbikge1xuXHRcdFx0XHRzdWIucHJlU3Vic2NyaXB0aW9uRGF0YSA9IGF3YWl0IHRoYXQuX3B1YmxpY2F0aW9uc1tzdWIucHVibGljYXRpb25dLnByZUZ1bmN0aW9uKHN1Yi5zdWJzY3JpcHRpb25EYXRhKTtcblx0XHRcdFx0aWYgKHRoYXQuX3B1YmxpY2F0aW9uc1tzdWIucHVibGljYXRpb25dLmZldGNoRnVuY3Rpb24oZG9jdW1lbnQsIHN1Yi5wcmVTdWJzY3JpcHRpb25EYXRhKSkge1xuXHRcdFx0XHRcdHRoYXQuc2VuZFB1YkRhdGEoc3ViKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmICh0aGF0Ll9wdWJsaWNhdGlvbnNbc3ViLnB1YmxpY2F0aW9uXS53c19zcGVjaWZpYykge1xuXHRcdFx0XHRcdHN1Yi5jbGllbnRzLmZvckVhY2goY2xpZW50ID0+IHtcblx0XHRcdFx0XHRcdGlmICh0aGF0Ll9wdWJsaWNhdGlvbnNbc3ViLnB1YmxpY2F0aW9uXS5mZXRjaEZ1bmN0aW9uKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGF0Ll9wdWJsaWNhdGlvbnNbc3ViLnB1YmxpY2F0aW9uXS5mZXRjaEZ1bmN0aW9uKGRvY3VtZW50LCBjbGllbnQuaWRfdXNlciwgLi4uc3ViLnN1YnNjcmlwdGlvbkRhdGEpKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5fd3NzLmNsaWVudHMuZm9yRWFjaCh3cyA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAod3NbJ2lkX3NvY2tldCddID09PSBjbGllbnQuaWRfc29ja2V0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuc2VuZFB1YkRhdGFPbmNlKHdzLCBjbGllbnQubWVzc2FnZUlkLCBzdWIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5fd3NzLmNsaWVudHMuZm9yRWFjaCh3cyA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHdzWydpZF9zb2NrZXQnXSA9PT0gY2xpZW50LmlkX3NvY2tldCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5zZW5kUHViRGF0YU9uY2Uod3MsIGNsaWVudC5tZXNzYWdlSWQsIHN1Yik7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRpZiAodGhhdC5fcHVibGljYXRpb25zW3N1Yi5wdWJsaWNhdGlvbl0uZmV0Y2hGdW5jdGlvbikge1xuXHRcdFx0XHRcdFx0aWYgKHRoYXQuX3B1YmxpY2F0aW9uc1tzdWIucHVibGljYXRpb25dLmZldGNoRnVuY3Rpb24oZG9jdW1lbnQsIC4uLnN1Yi5zdWJzY3JpcHRpb25EYXRhKSkge1xuXHRcdFx0XHRcdFx0XHR0aGF0LnNlbmRQdWJEYXRhKHN1Yik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhhdC5zZW5kUHViRGF0YShzdWIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBjaGVja1N1cHBvcnRQdWJzRm9yQ2hhbmdlcyhjb2xsZWN0aW9uOiBzdHJpbmcsIGRvY3VtZW50OiBPYmplY3QpIHtcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHR0aGF0Ll9zdWJzY3JpcHRpb25zLmZpbHRlcihhID0+IGEuY29sbGVjdGlvbnMuaW5jbHVkZXMoY29sbGVjdGlvbikpLmZvckVhY2goYXN5bmMgc3ViID0+IHtcblx0XHRcdGxldCBzY2hlbWFFcnJvcnMgPSBudWxsO1xuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbilbJ3NpbXBsc2NoZW1hJ10udmFsaWRhdGUoZG9jdW1lbnQpO1xuXHRcdFx0fVxuXHRcdFx0Y2F0Y2ggKGVycm9ycykge1xuXHRcdFx0XHRzY2hlbWFFcnJvcnMgPSBlcnJvcnM7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzY2hlbWFFcnJvcnMpIHtcblx0XHRcdFx0ZG9jdW1lbnQgPSBhd2FpdCBSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbikuZmluZEJ5SWQoZG9jdW1lbnRbJ19pZCddKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHN1Yi5wcmVTdWJzY3JpcHRpb25EYXRhKSB7XG5cdFx0XHRcdGlmICh0aGF0Ll9wdWJsaWNhdGlvbnNbc3ViLnB1YmxpY2F0aW9uXS5mZXRjaEZ1bmN0aW9uKGRvY3VtZW50LCBzdWIucHJlU3Vic2NyaXB0aW9uRGF0YSkpIHtcblx0XHRcdFx0XHR0aGF0LnNlbmRQdWJEYXRhKHN1Yik7XG5cblx0XHRcdFx0XHRzdWIucHJlU3Vic2NyaXB0aW9uRGF0YSA9IGF3YWl0IHRoYXQuX3B1YmxpY2F0aW9uc1tzdWIucHVibGljYXRpb25dLnByZUZ1bmN0aW9uKC4uLnN1Yi5zdWJzY3JpcHRpb25EYXRhKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoYXQuX3B1YmxpY2F0aW9uc1tzdWIucHVibGljYXRpb25dLnByZUZ1bmN0aW9uKSB7XG5cdFx0XHRcdHN1Yi5wcmVTdWJzY3JpcHRpb25EYXRhID0gYXdhaXQgdGhhdC5fcHVibGljYXRpb25zW3N1Yi5wdWJsaWNhdGlvbl0ucHJlRnVuY3Rpb24oLi4uc3ViLnN1YnNjcmlwdGlvbkRhdGEpO1xuXHRcdFx0XHRpZiAodGhhdC5fcHVibGljYXRpb25zW3N1Yi5wdWJsaWNhdGlvbl0uZmV0Y2hGdW5jdGlvbihkb2N1bWVudCwgc3ViLnByZVN1YnNjcmlwdGlvbkRhdGEpKSB7XG5cdFx0XHRcdFx0dGhhdC5zZW5kUHViRGF0YShzdWIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYgKHRoYXQuX3B1YmxpY2F0aW9uc1tzdWIucHVibGljYXRpb25dLndzX3NwZWNpZmljKSB7XG5cdFx0XHRcdFx0c3ViLmNsaWVudHMuZm9yRWFjaChjbGllbnQgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHRoYXQuX3B1YmxpY2F0aW9uc1tzdWIucHVibGljYXRpb25dLmZldGNoRnVuY3Rpb24pIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoYXQuX3B1YmxpY2F0aW9uc1tzdWIucHVibGljYXRpb25dLmZldGNoRnVuY3Rpb24oZG9jdW1lbnQsIGNsaWVudC5pZF91c2VyLCAuLi5zdWIuc3Vic2NyaXB0aW9uRGF0YSkpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGF0Ll93c3MuY2xpZW50cy5mb3JFYWNoKHdzID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh3c1snaWRfc29ja2V0J10gPT09IGNsaWVudC5pZF9zb2NrZXQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5zZW5kUHViRGF0YU9uY2Uod3MsIGNsaWVudC5tZXNzYWdlSWQsIHN1Yik7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGF0Ll93c3MuY2xpZW50cy5mb3JFYWNoKHdzID0+IHtcblx0XHRcdFx0XHRcdFx0XHRpZiAod3NbJ2lkX3NvY2tldCddID09PSBjbGllbnQuaWRfc29ja2V0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnNlbmRQdWJEYXRhT25jZSh3cywgY2xpZW50Lm1lc3NhZ2VJZCwgc3ViKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGlmICh0aGF0Ll9wdWJsaWNhdGlvbnNbc3ViLnB1YmxpY2F0aW9uXS5mZXRjaEZ1bmN0aW9uKSB7XG5cdFx0XHRcdFx0XHRpZiAodGhhdC5fcHVibGljYXRpb25zW3N1Yi5wdWJsaWNhdGlvbl0uZmV0Y2hGdW5jdGlvbihkb2N1bWVudCwgLi4uc3ViLnN1YnNjcmlwdGlvbkRhdGEpKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuc2VuZFB1YkRhdGEoc3ViKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGF0LnNlbmRQdWJEYXRhKHN1Yik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvLyBGZXRjaCBwdWIgb25jZSwgc2VuZCB0byBhbGwgY2xpZW50cyBsaW5rZWQgdG8gdGhpcyBwdWJcblx0cHJpdmF0ZSBhc3luYyBzZW5kUHViRGF0YU9uY2Uod3M6IFdlYlNvY2tldCwgbWVzc2FnZUlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbjogQWN0aXZlU3Vic2NyaXB0aW9uTW9kZWwpIHtcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHRpZiAoIXRoYXQuX3B1YmxpY2F0aW9uc1tzdWJzY3JpcHRpb24ucHVibGljYXRpb25dLndzX3NwZWNpZmljKSB7IC8vIFNhbWUgcHViIGZvciBhbGwgdXNlcnNcblx0XHRcdHRoYXQuX3B1YmxpY2F0aW9uc1tzdWJzY3JpcHRpb24ucHVibGljYXRpb25dLmZ1bmN0aW9uLmNhbGwodGhhdCwgLi4uc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbkRhdGEpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0bGV0IHNlcnZlclJlczogU2VydmVyUmVzcG9uc2VNb2RlbCA9IHtcblx0XHRcdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdFx0XHRoYXNFcnJvcjogZmFsc2UsXG5cdFx0XHRcdFx0ZGF0YTogcmVzXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0dGhpcy5zZW5kV1Mod3MsIHNlcnZlclJlcyk7XG5cdFx0XHR9LCBlcnIgPT4ge1xuXHRcdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRcdGhhc0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRcdGRhdGE6IGVyclxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHRoaXMuc2VuZFdTKHdzLCBzZXJ2ZXJSZXMpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGVsc2UgeyAvLyBQdWIgaXMgZGlmZmVyZW50IGZvciBlYWNoIHVzZXIgKExvb2sgYXQgdXNlcnMgcHVibGljYXRpb24pIFtNVUNIIFNMT1dFUiwgUkUtUlVOUyBGT1IgRUFDSCBVU0VSXVxuXHRcdFx0dGhhdC5fcHVibGljYXRpb25zW3N1YnNjcmlwdGlvbi5wdWJsaWNhdGlvbl0uZnVuY3Rpb24uY2FsbCh0aGF0LCB3c1snaWRfdXNlciddLCAuLi5zdWJzY3JpcHRpb24uc3Vic2NyaXB0aW9uRGF0YSkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRcdGhhc0Vycm9yOiBmYWxzZSxcblx0XHRcdFx0XHRkYXRhOiByZXNcblx0XHRcdFx0fTtcblxuXHRcdFx0XHR0aGlzLnNlbmRXUyh3cywgc2VydmVyUmVzKTtcblxuXHRcdFx0fSwgZXJyID0+IHtcblx0XHRcdFx0bGV0IHNlcnZlclJlczogU2VydmVyUmVzcG9uc2VNb2RlbCA9IHtcblx0XHRcdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdFx0XHRoYXNFcnJvcjogdHJ1ZSxcblx0XHRcdFx0XHRkYXRhOiBlcnJcblx0XHRcdFx0fTtcblxuXHRcdFx0XHR0aGlzLnNlbmRXUyh3cywgc2VydmVyUmVzKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZldGNoIHB1YiBvbmNlLCBzZW5kIHRvIGFsbCBjbGllbnRzIGxpbmtlZCB0byB0aGlzIHB1YlxuXHRwcml2YXRlIGFzeW5jIHNlbmRQdWJEYXRhKHN1YnNjcmlwdGlvbjogQWN0aXZlU3Vic2NyaXB0aW9uTW9kZWwpIHtcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHR0aGF0Ll9wdWJsaWNhdGlvbnNbc3Vic2NyaXB0aW9uLnB1YmxpY2F0aW9uXS5mdW5jdGlvbi5jYWxsKHRoYXQsIC4uLnN1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25EYXRhKS50aGVuKHJlcyA9PiB7XG5cdFx0XHRzdWJzY3JpcHRpb24uY2xpZW50cy5mb3JFYWNoKGNsaWVudCA9PiB7XG5cdFx0XHRcdHRoYXQuX3dzcy5jbGllbnRzLmZvckVhY2god3MgPT4ge1xuXHRcdFx0XHRcdGlmICh3c1snaWRfc29ja2V0J10gPT09IGNsaWVudC5pZF9zb2NrZXQpIHtcblx0XHRcdFx0XHRcdGxldCBzZXJ2ZXJSZXM6IFNlcnZlclJlc3BvbnNlTW9kZWwgPSB7XG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogY2xpZW50Lm1lc3NhZ2VJZCxcblx0XHRcdFx0XHRcdFx0aGFzRXJyb3I6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRkYXRhOiByZXNcblx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdHRoaXMuc2VuZFdTKHdzLCBzZXJ2ZXJSZXMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LCBlcnIgPT4ge1xuXHRcdFx0c3Vic2NyaXB0aW9uLmNsaWVudHMuZm9yRWFjaChjbGllbnQgPT4ge1xuXHRcdFx0XHR0aGF0Ll93c3MuY2xpZW50cy5mb3JFYWNoKHdzID0+IHtcblx0XHRcdFx0XHRpZiAod3NbJ2lkX3NvY2tldCddID09PSBjbGllbnQuaWRfc29ja2V0KSB7XG5cdFx0XHRcdFx0XHRsZXQgc2VydmVyUmVzOiBTZXJ2ZXJSZXNwb25zZU1vZGVsID0ge1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6IGNsaWVudC5tZXNzYWdlSWQsXG5cdFx0XHRcdFx0XHRcdGhhc0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRkYXRhOiBlcnJcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHRoaXMuc2VuZFdTKHdzLCBzZXJ2ZXJSZXMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgc2VuZFdTKHdzOiBXZWJTb2NrZXQsIGRhdGE6IFNlcnZlclJlc3BvbnNlTW9kZWwpIHtcblx0XHR0aGlzLl9zZW5kUXVldWUuc3BsaWNlKDAsIDAsIHtcblx0XHRcdGlkX3dzOiB3c1snaWRfc29ja2V0J10sXG5cdFx0XHRkYXRhOiBkYXRhXG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1 +1,2 @@
|
|
|
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;
|
|
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=
|