@resolveio/server-lib 9.0.1 → 9.0.3

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/cron/cron.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare let CronJobModule: any;
1
+ declare let CronJobPackage: any;
2
2
  declare function CrontabManager(key: any, tab: any, task: any, options: any): void;
3
3
  declare function combineOptions(tab: any, task: any, options: any): {};
4
4
  declare function updateTab(key: any, cronstring: any): void;
package/cron/cron.js CHANGED
@@ -1,4 +1,4 @@
1
- var CronJobModule = require('cron').CronJob;
1
+ var CronJobPackage = require('cron').CronJob;
2
2
  function CrontabManager(key, tab, task, options) {
3
3
  this.jobs = {};
4
4
  if (key && tab && task) {
@@ -19,7 +19,7 @@ CrontabManager.prototype.add = function (key, tab, task, options) {
19
19
  this.deleteJob(key);
20
20
  console.warn(key + " already existed and was deleted from the manager...");
21
21
  }
22
- this.jobs[key] = new CronJobModule(options);
22
+ this.jobs[key] = new CronJobPackage(options);
23
23
  }
24
24
  catch (fooBaredByUser) {
25
25
  console.error("crontab: " + tab + " possibly not valid, job " + key + " not started..." + fooBaredByUser.message);
@@ -133,7 +133,7 @@ function updateTab(key, cronstring) {
133
133
  var running = this.jobs[key].running;
134
134
  this.jobs[key].stop();
135
135
  if (typeof cronstring === 'string' || cronstring instanceof Date) {
136
- this.jobs[key] = new CronJobModule(cronstring, this.jobs[key]._callbacks[0], this.jobs[key].onComplete, running, this.jobs[key].zone);
136
+ this.jobs[key] = new CronJobPackage(cronstring, this.jobs[key]._callbacks[0], this.jobs[key].onComplete, running, this.jobs[key].zone);
137
137
  }
138
138
  else {
139
139
  throw new Error("The cron definition passed was not a string or a Date object! " + key + " was stopped and not updated");
@@ -151,7 +151,7 @@ function updateTask(key, task) {
151
151
  console.error("can't update with something that is not a function: " + typeof (task));
152
152
  return;
153
153
  }
154
- this.jobs[key] = new CronJobModule(this.jobs[key].cronTime.source, task, this.jobs[key].onComplete, running, this.jobs[key].zone);
154
+ this.jobs[key] = new CronJobPackage(this.jobs[key].cronTime.source, task, this.jobs[key].onComplete, running, this.jobs[key].zone);
155
155
  }
156
156
  catch (tabErr) {
157
157
  console.error("error updating task: " + key + " - " + tabErr.message);
package/cron/cron.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cron/cron.ts"],"names":[],"mappings":"AAAA,IAAI,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AAE5C,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO;IAC9C,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACf,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KAClC;AAEF,CAAC;AAED,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,UAAS,GAAG;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG;IAClC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,GAAG,GAAG,UAAS,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO;IAC9D,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,IAAI,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,IAAI,YAAY,QAAQ,EAAE;QAC5G,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI;YACH,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAI,GAAG,yDAAsD,CAAC,CAAC;aAC3E;YAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;SAC5C;QACD,OAAO,cAAc,EAAE;YACtB,OAAO,CAAC,KAAK,CAAC,cAAY,GAAG,iCAA4B,GAAG,uBAAkB,cAAc,CAAC,OAAS,CAAC,CAAC;SACxG;KACD;SACI;QACJ,OAAO,CAAC,IAAI,CAAC,mBAAiB,GAAG,wBAAqB,CAAC,CAAC;KACxD;AACF,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG;IACjC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE;YACrE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACjD;aACI,IAAI,SAAS,CAAC,CAAC,CAAC,YAAY,QAAQ,EAAE;YAC1C,UAAU,CAAC,IAAI,CAAC,IAAI,EAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACnD;KACD;SACI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KACnD;SACI;QACJ,OAAO,CAAC,KAAK,CAAC,oEAAkE,SAAS,CAAC,CAAC,CAAG,CAAC,CAAC;KAChG;AACF,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,SAAS,GAAG,UAAS,GAAG;IAChD,IAAI;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACtB;IACD,OAAO,GAAG,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,kCAAgC,GAAG,UAAK,GAAK,CAAC,CAAC;KAC7D;AACF,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,KAAK,GAAG,UAAS,GAAG;IAC5C,IAAI;QACH,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAI,GAAG,yBAAsB,CAAC,CAAC;SAC3C;aACI;YACJ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SACvB;KACD;IACD,OAAO,GAAG,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,yBAAuB,GAAG,UAAK,GAAK,CAAC,CAAC;KACpD;AACF,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,UAAS,GAAG;IAC3C,IAAI;QACH,IAAI,CAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAG;YAC9B,OAAO,CAAC,IAAI,CAAI,GAAG,yBAAsB,CAAC,CAAC;SAC3C;aACI;YACJ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;SACtB;KACD;IACD,OAAO,GAAG,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,wBAAsB,GAAG,UAAK,GAAK,CAAC,CAAC;KACnD;AACF,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG;IAClC,iCAAiC;IACjC,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;QAC7B,IAAI;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;SACzB;QACD,OAAO,GAAG,EAAE;SAEX;KACD;AACF,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAG;IACnC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,iCAAiC;IACjC,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;QAE7B,SAAS,IAAI,MAAI,MAAM,WAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,UAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAE,CAAC;KAC3J;IACD,SAAS,IAAI,KAAK,CAAC;IACnB,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,SAAS,GAAG;IACpC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,iCAAiC;IACjC,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;QAC7B,SAAS,IAAI,MAAI,MAAM,WAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,kBAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,SAAK,CAAC;KACjI;IACD,SAAS,IAAI,KAAK,CAAC;IACnB,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,UAAS,MAAM;IAChD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACtB,OAAO,IAAI,CAAC;KACZ;IAED,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO;IACzC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEzB,IAAI,OAAO,YAAY,MAAM,EAAE;QAC9B,wCAAwC;QACxC,iCAAiC;QACjC,KAAK,IAAI,SAAS,IAAI,OAAO,EAAE;YAC9B,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;SACxC;KACD;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,GAAG,EAAE,UAAU;IAEjC,IAAI;QACH,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEtB,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,YAAY,IAAI,EAAE;YACjE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;SACvI;aACI;YACJ,MAAM,IAAI,KAAK,CAAC,mEAAiE,GAAG,iCAA8B,CAAC,CAAC;SACpH;KACD;IACD,OAAO,MAAM,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,yBAAuB,GAAG,WAAM,MAAM,CAAC,OAAS,CAAC,CAAC;KAChE;AACF,CAAC;AAED,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI;IAC5B,IAAI;QACH,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEtB,IAAI,CAAC,CAAC,IAAI,YAAY,QAAQ,CAAC,EAAE;YAChC,OAAO,CAAC,KAAK,CAAC,yDAAuD,OAAM,CAAC,IAAI,CAAG,CAAC,CAAC;YACrF,OAAO;SACP;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;KAGnI;IACD,OAAO,MAAM,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,0BAAwB,GAAG,YAAO,MAAM,CAAC,OAAS,CAAC,CAAC;KAClE;AACF,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC","file":"cron.js","sourcesContent":["let CronJobModule = require('cron').CronJob;\n\nfunction CrontabManager(key, tab, task, options) {\n\tthis.jobs = {};\n\tif (key && tab && task) {\n\t\tthis.add(key, tab, task, options);\n\t}\n\n}\n\nCrontabManager.prototype.getJob = function(key) {\n\treturn this.jobs[key];\n};\n\nCrontabManager.prototype.getJobs = function() {\n\treturn Object.keys(this.jobs);\n};\n\nCrontabManager.prototype.add = function(key, tab, task, options) {\n\tif ((typeof tab === 'string' || tab instanceof Date) && typeof key === 'string' && task instanceof Function) {\n\t\toptions = combineOptions(tab, task, options);\n\t\ttry {\n\t\t\tif (this.jobs[key]) {\n\t\t\t\tthis.deleteJob(key);\n\t\t\t\tconsole.warn(`${key} already existed and was deleted from the manager...`);\n\t\t\t}\n\t\t\t\n\t\t\tthis.jobs[key] = new CronJobModule(options);\n\t\t} \n\t\tcatch (fooBaredByUser) {\n\t\t\tconsole.error(`crontab: ${tab} possibly not valid, job ${key} not started...${fooBaredByUser.message}`);\n\t\t}\n\t}\n\telse {\n\t\tconsole.warn(`couldn't add: ${key} improper arguments`);\n\t}\n};\n\nCrontabManager.prototype.update = function() {\n\tif (arguments.length === 2) {\n\t\tif (typeof arguments[1] === 'string' || arguments[1] instanceof Date) {\n\t\t\tupdateTab.call(this, arguments[0], arguments[1]);\n\t\t}\n\t\telse if (arguments[1] instanceof Function) {\n\t\t\tupdateTask.call(this, arguments[0], arguments[1]);\n\t\t}\n\t} \n\telse if (arguments.length === 3) {\n\t\tupdateTab.call(this, arguments[0], arguments[1]);\n\t\tupdateTask.call(this, arguments[0], arguments[2]);\n\t}\n\telse {\n\t\tconsole.error(`incorrect number of arguents passed to update.. won't update.. ${arguments[0]}`);\n\t}\n};\n\nCrontabManager.prototype.deleteJob = function(key) {\n\ttry {\n\t\tthis.jobs[key].stop();\n\t\tdelete this.jobs[key];\n\t}\n\tcatch (err) { \n\t\tconsole.error(`error in trying to stop job: ${key}: ${err}`);\n\t}\n};\n\nCrontabManager.prototype.start = function(key) {\n\ttry {\n\t\tif (this.jobs[key].running) {\n\t\t\tconsole.warn(`${key} job already running`);\n\t\t}\n\t\telse {\n\t\t\tthis.jobs[key].start();\n\t\t}\n\t}\n\tcatch (err) {\n\t\tconsole.error(`couldn't start job: ${key}: ${err}`);\n\t}\n};\n\nCrontabManager.prototype.stop = function(key) {\n\ttry {\n\t\tif (! this.jobs[key].running ) {\n\t\t\tconsole.warn(`${key} job already stopped`);\n\t\t}\n\t\telse {\n\t\t\tthis.jobs[key].stop();\n\t\t}\n\t}\n\tcatch (err) {\n\t\tconsole.error(`couldn't stop job: ${key}: ${err}`);\n\t}\n};\n\nCrontabManager.prototype.stopAll = function() {\n\t// tslint:disable-next-line:forin\n\tfor (let jobKey in this.jobs) {\n\t\ttry {\n\t\t\tthis.jobs[jobKey].stop();\n\t\t}\n\t\tcatch (err) {\n\n\t\t}\n\t}\n};\n\nCrontabManager.prototype.toString = function() {\n\tlet manString = '{\\n';\n\t// tslint:disable-next-line:forin\n\tfor (let jobKey in this.jobs) {\n\n\t\tmanString += `'${jobKey}': ${this.jobs[jobKey].cronTime.source}: ${this.jobs[jobKey]._callbacks[0]}: ${this.jobs[jobKey].running ? 'Running' : 'Stopped'}`;\n\t}\n\tmanString += '\\n}';\n\treturn manString;\n};\n\nCrontabManager.prototype.listCrons = function() {\n\tlet manString = '{\\n';\n\t// tslint:disable-next-line:forin\n\tfor (let jobKey in this.jobs) {\n\t\tmanString += `'${jobKey}': ${this.jobs[jobKey].cronTime.source} status: ${this.jobs[jobKey].running ? 'Running' : 'Stopped'} \\n`;\n\t}\n\tmanString += '\\n}';\n\treturn manString;\n};\n\nCrontabManager.prototype.exists = function(tabKey) {\n\tif (this.jobs[tabKey]) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nfunction combineOptions(tab, task, options) {\n\tlet newOpts = {};\n\tnewOpts['cronTime'] = tab; \n\tnewOpts['onTick'] = task;\n\n\tif (options instanceof Object) {\n\t\t// might overwrite... please be careful.\n\t\t// tslint:disable-next-line:forin\n\t\tfor (let optionKey in options) {\n\t\t\tnewOpts[optionKey] = options[optionKey];\n\t\t}\n\t}\n\treturn newOpts;\n}\n\nfunction updateTab(key, cronstring) {\n\n\ttry {\n\t\tlet running = this.jobs[key].running;\n\t\tthis.jobs[key].stop();\n\n\t\tif (typeof cronstring === 'string' || cronstring instanceof Date) {\n\t\t\tthis.jobs[key] = new CronJobModule(cronstring, this.jobs[key]._callbacks[0], this.jobs[key].onComplete, running, this.jobs[key].zone);\n\t\t}\n\t\telse {\n\t\t\tthrow new Error(`The cron definition passed was not a string or a Date object! ${key} was stopped and not updated`);\n\t\t}\n\t}\n\tcatch (tabErr) {\n\t\tconsole.error(`error updating tab: ${key} - ${tabErr.message}`);\n\t}\n}\n\nfunction updateTask(key, task) {\n\ttry {\n\t\tlet running = this.jobs[key].running;\n\t\tthis.jobs[key].stop();\n\n\t\tif (!(task instanceof Function)) {\n\t\t\tconsole.error(`can't update with something that is not a function: ${typeof(task)}`);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.jobs[key] = new CronJobModule(this.jobs[key].cronTime.source, task, this.jobs[key].onComplete, running, this.jobs[key].zone);\n\n\n\t} \n\tcatch (tabErr) {\n\t\tconsole.error(`error updating task: ${key} - ${tabErr.message}`);\n\t}\n}\n\nmodule.exports = CrontabManager;\n"]}
1
+ {"version":3,"sources":["../../src/cron/cron.ts"],"names":[],"mappings":"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","file":"cron.js","sourcesContent":["let CronJobPackage = require('cron').CronJob;\n\nfunction CrontabManager(key, tab, task, options) {\n\tthis.jobs = {};\n\tif (key && tab && task) {\n\t\tthis.add(key, tab, task, options);\n\t}\n\n}\n\nCrontabManager.prototype.getJob = function(key) {\n\treturn this.jobs[key];\n};\n\nCrontabManager.prototype.getJobs = function() {\n\treturn Object.keys(this.jobs);\n};\n\nCrontabManager.prototype.add = function(key, tab, task, options) {\n\tif ((typeof tab === 'string' || tab instanceof Date) && typeof key === 'string' && task instanceof Function) {\n\t\toptions = combineOptions(tab, task, options);\n\t\ttry {\n\t\t\tif (this.jobs[key]) {\n\t\t\t\tthis.deleteJob(key);\n\t\t\t\tconsole.warn(`${key} already existed and was deleted from the manager...`);\n\t\t\t}\n\t\t\t\n\t\t\tthis.jobs[key] = new CronJobPackage(options);\n\t\t} \n\t\tcatch (fooBaredByUser) {\n\t\t\tconsole.error(`crontab: ${tab} possibly not valid, job ${key} not started...${fooBaredByUser.message}`);\n\t\t}\n\t}\n\telse {\n\t\tconsole.warn(`couldn't add: ${key} improper arguments`);\n\t}\n};\n\nCrontabManager.prototype.update = function() {\n\tif (arguments.length === 2) {\n\t\tif (typeof arguments[1] === 'string' || arguments[1] instanceof Date) {\n\t\t\tupdateTab.call(this, arguments[0], arguments[1]);\n\t\t}\n\t\telse if (arguments[1] instanceof Function) {\n\t\t\tupdateTask.call(this, arguments[0], arguments[1]);\n\t\t}\n\t} \n\telse if (arguments.length === 3) {\n\t\tupdateTab.call(this, arguments[0], arguments[1]);\n\t\tupdateTask.call(this, arguments[0], arguments[2]);\n\t}\n\telse {\n\t\tconsole.error(`incorrect number of arguents passed to update.. won't update.. ${arguments[0]}`);\n\t}\n};\n\nCrontabManager.prototype.deleteJob = function(key) {\n\ttry {\n\t\tthis.jobs[key].stop();\n\t\tdelete this.jobs[key];\n\t}\n\tcatch (err) { \n\t\tconsole.error(`error in trying to stop job: ${key}: ${err}`);\n\t}\n};\n\nCrontabManager.prototype.start = function(key) {\n\ttry {\n\t\tif (this.jobs[key].running) {\n\t\t\tconsole.warn(`${key} job already running`);\n\t\t}\n\t\telse {\n\t\t\tthis.jobs[key].start();\n\t\t}\n\t}\n\tcatch (err) {\n\t\tconsole.error(`couldn't start job: ${key}: ${err}`);\n\t}\n};\n\nCrontabManager.prototype.stop = function(key) {\n\ttry {\n\t\tif (! this.jobs[key].running ) {\n\t\t\tconsole.warn(`${key} job already stopped`);\n\t\t}\n\t\telse {\n\t\t\tthis.jobs[key].stop();\n\t\t}\n\t}\n\tcatch (err) {\n\t\tconsole.error(`couldn't stop job: ${key}: ${err}`);\n\t}\n};\n\nCrontabManager.prototype.stopAll = function() {\n\t// tslint:disable-next-line:forin\n\tfor (let jobKey in this.jobs) {\n\t\ttry {\n\t\t\tthis.jobs[jobKey].stop();\n\t\t}\n\t\tcatch (err) {\n\n\t\t}\n\t}\n};\n\nCrontabManager.prototype.toString = function() {\n\tlet manString = '{\\n';\n\t// tslint:disable-next-line:forin\n\tfor (let jobKey in this.jobs) {\n\n\t\tmanString += `'${jobKey}': ${this.jobs[jobKey].cronTime.source}: ${this.jobs[jobKey]._callbacks[0]}: ${this.jobs[jobKey].running ? 'Running' : 'Stopped'}`;\n\t}\n\tmanString += '\\n}';\n\treturn manString;\n};\n\nCrontabManager.prototype.listCrons = function() {\n\tlet manString = '{\\n';\n\t// tslint:disable-next-line:forin\n\tfor (let jobKey in this.jobs) {\n\t\tmanString += `'${jobKey}': ${this.jobs[jobKey].cronTime.source} status: ${this.jobs[jobKey].running ? 'Running' : 'Stopped'} \\n`;\n\t}\n\tmanString += '\\n}';\n\treturn manString;\n};\n\nCrontabManager.prototype.exists = function(tabKey) {\n\tif (this.jobs[tabKey]) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nfunction combineOptions(tab, task, options) {\n\tlet newOpts = {};\n\tnewOpts['cronTime'] = tab; \n\tnewOpts['onTick'] = task;\n\n\tif (options instanceof Object) {\n\t\t// might overwrite... please be careful.\n\t\t// tslint:disable-next-line:forin\n\t\tfor (let optionKey in options) {\n\t\t\tnewOpts[optionKey] = options[optionKey];\n\t\t}\n\t}\n\treturn newOpts;\n}\n\nfunction updateTab(key, cronstring) {\n\n\ttry {\n\t\tlet running = this.jobs[key].running;\n\t\tthis.jobs[key].stop();\n\n\t\tif (typeof cronstring === 'string' || cronstring instanceof Date) {\n\t\t\tthis.jobs[key] = new CronJobPackage(cronstring, this.jobs[key]._callbacks[0], this.jobs[key].onComplete, running, this.jobs[key].zone);\n\t\t}\n\t\telse {\n\t\t\tthrow new Error(`The cron definition passed was not a string or a Date object! ${key} was stopped and not updated`);\n\t\t}\n\t}\n\tcatch (tabErr) {\n\t\tconsole.error(`error updating tab: ${key} - ${tabErr.message}`);\n\t}\n}\n\nfunction updateTask(key, task) {\n\ttry {\n\t\tlet running = this.jobs[key].running;\n\t\tthis.jobs[key].stop();\n\n\t\tif (!(task instanceof Function)) {\n\t\t\tconsole.error(`can't update with something that is not a function: ${typeof(task)}`);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.jobs[key] = new CronJobPackage(this.jobs[key].cronTime.source, task, this.jobs[key].onComplete, running, this.jobs[key].zone);\n\n\n\t} \n\tcatch (tabErr) {\n\t\tconsole.error(`error updating task: ${key} - ${tabErr.message}`);\n\t}\n}\n\nmodule.exports = CrontabManager;\n"]}
@@ -181,7 +181,7 @@ var CronManager = /** @class */ (function () {
181
181
  _a.label = 8;
182
182
  case 8:
183
183
  if (res.repeat) {
184
- nextDate = (this._cronManager.getJob(res.name).nextDates().toDate()).setSeconds(0, 0);
184
+ nextDate = this._cronManager.getJob(res.name).nextDates().second(0).millisecond(0).toDate();
185
185
  cron_job_collection_1.CronJobs.updateOne({
186
186
  $and: [
187
187
  { _id: res._id },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/managers/cron.manager.ts"],"names":[],"mappings":"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","file":"cron.manager.js","sourcesContent":["import { CronJobModel } from '../models/cron-job.model';\nimport { CronJobs } from '../collections/cron-job.collection';\nimport ResolveIOMainServer from '../server-app';\nlet CronJobManager = require('../cron/cron');\n\nexport class CronManager {\n\n\tprivate _cronManager;\n\tprivate _mainServer: ResolveIOMainServer;\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\n\t\tthis._cronManager = new CronJobManager();\n\t\tthis.loadCronJobs();\n\t}\n\n\tprivate async loadCronJobs() {\n\t\tlet jobs = await CronJobs.find({});\n\n\t\tjobs.forEach(job => {\n\t\t\tthis.addCronJob(job);\n\t\t});\n\t}\n\n\tprivate doesCronJobExist(cron: CronJobModel) {\n\t\treturn this._cronManager.exists(cron.name);\n\t}\n\n\tprivate doesCronJobNameExist(cron_name: string) {\n\t\treturn this._cronManager.exists(cron_name);\n\t}\n\n\tprivate addCronJob(cron: CronJobModel) {\n\t\tif (!this.doesCronJobExist(cron)) {\n\t\t\tif (cron.timezone) {\n\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet cronOptions = {\n\t\t\t\t\tstart: true,\n\t\t\t\t\t// onComplete: () => {\n\t\t\t\t\t// \tthis.runCronJobCompleted(cron);\n\t\t\t\t\t// },\n\t\t\t\t\t// timeZone: cron.timezone\n\t\t\t\t};\n\n\t\t\t\tif (cron.timezone) {\n\t\t\t\t\tcronOptions['timeZone'] = cron.timezone;\n\t\t\t\t}\n\n\t\t\t\tthis._cronManager.add(\n\t\t\t\t\tcron.name,\n\t\t\t\t\tcron.time_to_run,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.runCronJob(cron);\n\t\t\t\t\t},\n\t\t\t\t\tcronOptions\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate updateCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.update(cron.name, cron.time_to_run);\n\t\t}\n\t}\n\n\tprivate removeCronJob(cron_name: string) {\n\t\tif (this.doesCronJobNameExist(cron_name)) {\n\t\t\tthis._cronManager.deleteJob(cron_name);\n\t\t}\n\t}\n\n\tprivate startCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopAllCronJobs() {\n\t\tthis._cronManager.stopAll();\n\t}\n\n\tpublic async checkCronJobsForUpdates() {\n\t\tlet jobs = await CronJobs.find({});\n\n\t\t// Remove deleted cron jobs\n\t\tthis._cronManager.getJobs().forEach(cronJob => {\n\t\t\tif (jobs.map(a => a.name).indexOf(cronJob) === -1) {\n\t\t\t\tthis.removeCronJob(cronJob);\n\t\t\t}\n\t\t});\n\n\t\t// Add new cron jobs\n\t\tjobs.forEach(cronJob => {\n\t\t\tthis.addCronJob(cronJob);\n\t\t});\n\n\t\t// Update cronjobs\n\t\tjobs.forEach(cronJob => {\n\t\t\tthis.updateCronJob(cronJob);\n\t\t});\n\t}\n\n\tprivate runCronJob(cron: CronJobModel) {\n\t\tlet now = new Date();\n\n\t\tif (!cron.next_run || now.getTime() >= cron.next_run.getTime()) {\n\n\t\t\tCronJobs.findOneAndUpdate({\n\t\t\t\t$and: [\n\t\t\t\t\t{_id: cron._id},\n\t\t\t\t\t{running: false},\n\t\t\t\t\t{\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{next_run: {$exists: false}},\n\t\t\t\t\t\t\t{next_run: null},\n\t\t\t\t\t\t\t{next_run: {$lte: now}}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}, {$set: {running: true}}).then(async res => {\n\t\t\t\tif (res) {\n\t\t\t\t\tif (res.method_run_data) {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data);\t\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (res.method_complete) {\n\t\t\t\t\t\tif (res.method_complete_data) {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (res.repeat) {\n\t\t\t\t\t\tlet nextDate = (this._cronManager.getJob(res.name).nextDates().toDate()).setSeconds(0, 0);\n\n\t\t\t\t\t\tCronJobs.updateOne({\n\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t{_id: res._id},\n\t\t\t\t\t\t\t\t{running: true}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, () => {});\n\t\t}\n\t}\n}"]}
1
+ {"version":3,"sources":["../../src/managers/cron.manager.ts"],"names":[],"mappings":"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","file":"cron.manager.js","sourcesContent":["import { CronJobModel } from '../models/cron-job.model';\nimport { CronJobs } from '../collections/cron-job.collection';\nimport ResolveIOMainServer from '../server-app';\nlet CronJobManager = require('../cron/cron');\nimport * as moment from 'moment';\n\nexport class CronManager {\n\n\tprivate _cronManager;\n\tprivate _mainServer: ResolveIOMainServer;\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\n\t\tthis._cronManager = new CronJobManager();\n\t\tthis.loadCronJobs();\n\t}\n\n\tprivate async loadCronJobs() {\n\t\tlet jobs = await CronJobs.find({});\n\n\t\tjobs.forEach(job => {\n\t\t\tthis.addCronJob(job);\n\t\t});\n\t}\n\n\tprivate doesCronJobExist(cron: CronJobModel) {\n\t\treturn this._cronManager.exists(cron.name);\n\t}\n\n\tprivate doesCronJobNameExist(cron_name: string) {\n\t\treturn this._cronManager.exists(cron_name);\n\t}\n\n\tprivate addCronJob(cron: CronJobModel) {\n\t\tif (!this.doesCronJobExist(cron)) {\n\t\t\tif (cron.timezone) {\n\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet cronOptions = {\n\t\t\t\t\tstart: true,\n\t\t\t\t\t// onComplete: () => {\n\t\t\t\t\t// \tthis.runCronJobCompleted(cron);\n\t\t\t\t\t// },\n\t\t\t\t\t// timeZone: cron.timezone\n\t\t\t\t};\n\n\t\t\t\tif (cron.timezone) {\n\t\t\t\t\tcronOptions['timeZone'] = cron.timezone;\n\t\t\t\t}\n\n\t\t\t\tthis._cronManager.add(\n\t\t\t\t\tcron.name,\n\t\t\t\t\tcron.time_to_run,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.runCronJob(cron);\n\t\t\t\t\t},\n\t\t\t\t\tcronOptions\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate updateCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.update(cron.name, cron.time_to_run);\n\t\t}\n\t}\n\n\tprivate removeCronJob(cron_name: string) {\n\t\tif (this.doesCronJobNameExist(cron_name)) {\n\t\t\tthis._cronManager.deleteJob(cron_name);\n\t\t}\n\t}\n\n\tprivate startCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopAllCronJobs() {\n\t\tthis._cronManager.stopAll();\n\t}\n\n\tpublic async checkCronJobsForUpdates() {\n\t\tlet jobs = await CronJobs.find({});\n\n\t\t// Remove deleted cron jobs\n\t\tthis._cronManager.getJobs().forEach(cronJob => {\n\t\t\tif (jobs.map(a => a.name).indexOf(cronJob) === -1) {\n\t\t\t\tthis.removeCronJob(cronJob);\n\t\t\t}\n\t\t});\n\n\t\t// Add new cron jobs\n\t\tjobs.forEach(cronJob => {\n\t\t\tthis.addCronJob(cronJob);\n\t\t});\n\n\t\t// Update cronjobs\n\t\tjobs.forEach(cronJob => {\n\t\t\tthis.updateCronJob(cronJob);\n\t\t});\n\t}\n\n\tprivate runCronJob(cron: CronJobModel) {\n\t\tlet now = new Date();\n\n\t\tif (!cron.next_run || now.getTime() >= cron.next_run.getTime()) {\n\n\t\t\tCronJobs.findOneAndUpdate({\n\t\t\t\t$and: [\n\t\t\t\t\t{_id: cron._id},\n\t\t\t\t\t{running: false},\n\t\t\t\t\t{\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{next_run: {$exists: false}},\n\t\t\t\t\t\t\t{next_run: null},\n\t\t\t\t\t\t\t{next_run: {$lte: now}}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}, {$set: {running: true}}).then(async res => {\n\t\t\t\tif (res) {\n\t\t\t\t\tif (res.method_run_data) {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data);\t\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (res.method_complete) {\n\t\t\t\t\t\tif (res.method_complete_data) {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (res.repeat) {\n\t\t\t\t\t\tlet nextDate = (<moment.Moment>this._cronManager.getJob(res.name).nextDates()).second(0).millisecond(0).toDate();\n\n\t\t\t\t\t\tCronJobs.updateOne({\n\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t{_id: res._id},\n\t\t\t\t\t\t\t\t{running: true}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, () => {});\n\t\t}\n\t}\n}"]}
@@ -10,8 +10,8 @@ export declare class MongoManager {
10
10
  collection(collectionName: string): Collection<any>;
11
11
  }
12
12
  export declare class Model<T> {
13
- collection_main: Collection<T>;
14
- collection_version: Collection<T>;
13
+ collection_main: Collection<T> | UserCollection<T>;
14
+ collection_version: Collection<T> | UserCollection<T>;
15
15
  constructor(collectionName: string, schema: object, useVersionCollection?: boolean, useReportBuilder?: boolean, reportBuilderLookupTables?: LookupTables[], timestamps?: boolean);
16
16
  }
17
17
  export declare class Collection<T> {
@@ -91,9 +91,13 @@ export declare class Collection<T> {
91
91
  }): import("mongodb").ChangeStream<any>;
92
92
  }
93
93
  export declare class UserCollection<T> extends Collection<T> {
94
- authenticate(user: any, password: any): Promise<unknown>;
95
- serializeUser(user: any, cb: any): void;
96
- deserializeUser(username: any, cb: any): void;
94
+ authenticateStrategy(): (username: any, password: any, cb: any) => Promise<void>;
95
+ authenticate(user: any, password: any): Promise<{
96
+ data: UserModel;
97
+ error: string;
98
+ }>;
99
+ serializeUser(): (user: any, cb: any) => void;
100
+ deserializeUser(): (username: any, cb: any) => void;
97
101
  setPassword(user: UserModel, password: string): Promise<unknown>;
98
102
  changePassword(user: any, oldPassword: any, newPassword: any): Promise<unknown>;
99
103
  register(user: any, password: any): Promise<unknown>;
@@ -82,12 +82,22 @@ var Model = /** @class */ (function () {
82
82
  if (timestamps === void 0) { timestamps = true; }
83
83
  this.collection_main = null;
84
84
  this.collection_version = null;
85
- this.collection_main = new Collection(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps);
85
+ if (collectionName === 'users') {
86
+ this.collection_main = new UserCollection(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps);
87
+ }
88
+ else {
89
+ this.collection_main = new Collection(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps);
90
+ }
86
91
  if (useVersionCollection) {
87
92
  var versionSchema = common_1.deepCopy(schema);
88
93
  versionSchema['_id'].type = 'Object';
89
94
  versionSchema['_id'].blackbox = true;
90
- this.collection_version = new Collection(collectionName + '.versions', versionSchema, false);
95
+ if (collectionName === 'users') {
96
+ this.collection_version = new UserCollection(collectionName + '.versions', versionSchema, false);
97
+ }
98
+ else {
99
+ this.collection_version = new Collection(collectionName + '.versions', versionSchema, false);
100
+ }
91
101
  this.collection_version.createIndex({ '_id.__v': 1, '_id._id': 1 });
92
102
  this.collection_main.versionCollection = collectionName + '.versions';
93
103
  }
@@ -231,12 +241,6 @@ var Collection = /** @class */ (function () {
231
241
  return new Promise(function (resolve, reject) {
232
242
  index_1.ResolveIOServer.getMainDB().collection(_this.collectionName).insertMany(docs, options).then(function (res) {
233
243
  if (res.result.ok) {
234
- var ids_1 = [];
235
- Object.keys(res.insertedIds).forEach(function (key) {
236
- if (res.insertedIds[key]) {
237
- ids_1.push(res.insertedIds[key]);
238
- }
239
- });
240
244
  resolve(docs);
241
245
  }
242
246
  else {
@@ -297,6 +301,30 @@ var UserCollection = /** @class */ (function (_super) {
297
301
  function UserCollection() {
298
302
  return _super !== null && _super.apply(this, arguments) || this;
299
303
  }
304
+ UserCollection.prototype.authenticateStrategy = function () {
305
+ var _this = this;
306
+ return function (username, password, cb) { return __awaiter(_this, void 0, void 0, function () {
307
+ var user;
308
+ return __generator(this, function (_a) {
309
+ switch (_a.label) {
310
+ case 0: return [4 /*yield*/, user_collection_1.Users.findOne({ username: username })];
311
+ case 1:
312
+ user = _a.sent();
313
+ this.authenticate(user, password).then(function (authUser) {
314
+ if (authUser.data) {
315
+ cb(null, user, null);
316
+ }
317
+ else {
318
+ cb(null, null, authUser.error);
319
+ }
320
+ }, function (err) {
321
+ cb(err, null, null);
322
+ });
323
+ return [2 /*return*/];
324
+ }
325
+ });
326
+ }); };
327
+ };
300
328
  UserCollection.prototype.authenticate = function (user, password) {
301
329
  var _this = this;
302
330
  return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
@@ -382,15 +410,19 @@ var UserCollection = /** @class */ (function (_super) {
382
410
  });
383
411
  }); });
384
412
  };
385
- UserCollection.prototype.serializeUser = function (user, cb) {
386
- cb(null, user.username);
413
+ UserCollection.prototype.serializeUser = function () {
414
+ return function (user, cb) {
415
+ cb(null, user.username);
416
+ };
387
417
  };
388
- UserCollection.prototype.deserializeUser = function (username, cb) {
389
- user_collection_1.Users.findOne({ username: username }).then(function (res) {
390
- cb(null, res);
391
- }, function (err) {
392
- cb(err, null);
393
- });
418
+ UserCollection.prototype.deserializeUser = function () {
419
+ return function (username, cb) {
420
+ user_collection_1.Users.findOne({ username: username }).then(function (res) {
421
+ cb(null, res);
422
+ }, function (err) {
423
+ cb(err, null);
424
+ });
425
+ };
394
426
  };
395
427
  UserCollection.prototype.setPassword = function (user, password) {
396
428
  var _this = this;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/managers/mongo.manager.ts"],"names":[],"mappings":"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","file":"mongo.manager.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { ChangeStreamOptions, ClientSession, CollectionAggregationOptions, CollectionInsertManyOptions, CollectionInsertOneOptions, CommonOptions, FilterQuery, FindOneAndDeleteOption, FindOneAndReplaceOption, FindOneAndUpdateOption, FindOneOptions, IndexOptions, IndexSpecification, MongoCountPreferences, MongoDistinctPreferences, ReadPreferenceOrMode, ReplaceOneOptions, UpdateManyOptions, UpdateOneOptions, UpdateQuery, ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nimport { ResolveIOServer } from '../index';\nimport { Users } from '../collections/user.collection';\nimport { buildRbLookups, buildRbSchema, deepCopy } from '../util/common';\nimport { UserModel } from '../models/user.model';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\n\nexport class MongoManager {\n\tprivate _server;\n\tprivate _collections: Collection<any>[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._server = mainServer;\n\t}\n\n\tregisterCollection(collection: Collection<any>) {\n\t\tthis._collections.push(collection);\n\t}\n\n\tcollections() {\n\t\treturn this._collections;\n\t}\n\n\tcollection(collectionName: string) {\n\t\treturn this._collections.filter(a => a.collectionName === collectionName)[0];\n\t}\n}\n\nexport class Model<T> {\n\tcollection_main: Collection<T> = null;\n\tcollection_version: Collection<T> = null;\n\n\tconstructor(collectionName: string, schema: object, useVersionCollection = false, useReportBuilder = true, reportBuilderLookupTables: LookupTables[] = [], timestamps = true) {\n\t\tthis.collection_main = new Collection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps);\n\n\t\tif (useVersionCollection) {\n\t\t\tlet versionSchema = deepCopy(schema);\n\t\t\tversionSchema['_id'].type = 'Object';\n\t\t\tversionSchema['_id'].blackbox = true;\n\n\t\t\tthis.collection_version = new Collection<T>(collectionName + '.versions', versionSchema, false);\n\t\t\tthis.collection_version.createIndex({'_id.__v': 1, '_id._id': 1});\n\t\t\tthis.collection_main.versionCollection = collectionName + '.versions';\n\t\t}\n\t}\n}\n\nexport class Collection<T> {\n\tcollectionName = '';\n\tsimplschema = null;\n\trbSchema = null;\n\ttimestamps = false;\n\tversionKey = '';\n\tversionCollection = '';\n\t\n\tconstructor(collectionName: string, schema: object, useReportBuilder = true, reportBuilderLookupTables: LookupTables[] = [], timestamps = true) {\n\t\tthis.collectionName = collectionName;\n\t\tthis.simplschema = new SimpleSchema(schema);\n\t\tthis.timestamps = timestamps;\n\n\t\tif (useReportBuilder) {\n\t\t\tlet schemaCopy = deepCopy(schema);\n\t\t\tlet rbSchema = buildRbLookups(reportBuilderLookupTables, schemaCopy, []);\n\t\t\tthis.rbSchema = buildRbSchema(rbSchema);\n\t\t}\n\t}\n\n\taggregate(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).toArray();\n\t}\n\n\taggregateCount(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).count();\n\t}\n\n\taggregateCursor(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options);\n\t}\n\n\taggregateStream(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).stream();\n\t}\n\n\tcountDocuments(filterQuery: FilterQuery<any> = {}, options?: MongoCountPreferences) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).countDocuments(filterQuery, options);\n\t}\n\n\tcreate(f_docs: any[] | object, options?: CollectionInsertManyOptions): Promise<T[]> {\n\t\tlet docs = [];\n\n\t\tif (!Array.isArray(f_docs)) {\n\t\t\tdocs = [f_docs];\n\t\t}\n\n\t\treturn this.insertMany(docs, options);\n\t}\n\n\tcreateIndex(fieldOrSpec: any, options?: IndexOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndex(fieldOrSpec, options);\n\t}\n\n\tcreateIndexes(indexSpecs: IndexSpecification[], options?: { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndexes(indexSpecs, options);\n\t}\n\n\tdeleteMany(filterQuery: FilterQuery<any> = {}, options?: CommonOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).deleteMany(filterQuery, options);\n\t}\n\n\tdeleteOne(filterQuery: FilterQuery<any> = {}, options?: CommonOptions & { bypassDocumentValidation?: boolean; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).deleteOne(filterQuery, options);\n\t}\n\n\tdistinct(key: string, query?: FilterQuery<any>, options?: MongoDistinctPreferences): Promise<T[]> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).distinct(key, query, options);\n\t}\n\n\tdrop(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).drop(options);\n\t}\n\n\tdropIndex(indexName: string, options?: CommonOptions & { maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndex(indexName, options);\n\t}\n\n\tdropIndexes(options?: { session?: ClientSession; maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndexes(options);\n\t}\n\n\tfind(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>): Promise<T[]> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filterQuery, options).toArray();\n\t}\n\n\tfindById(id: string, options?: FindOneOptions<any>): Promise<T> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne({_id: id}, options);\n\t}\n\n\tfindCount(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filterQuery, options).count();\n\t}\n\n\tfindCursor(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filterQuery, options);\n\t}\n\n\tfindStream(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>, streamOptions?: any) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filterQuery, options).stream(streamOptions);\n\t}\n\n\tfindOne(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>): Promise<T> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne(filterQuery, options);\n\t}\n\n\tfindOneAndDelete(filterQuery: FilterQuery<any> = {}, options?: FindOneAndDeleteOption<any>): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndDelete(filterQuery, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndReplace(filterQuery: FilterQuery<any> = {}, replacement: object, options?: FindOneAndReplaceOption<any>): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndReplace(filterQuery, replacement, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndUpdate(filterQuery: FilterQuery<any> = {}, update: any, options?: FindOneAndUpdateOption<any>): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndUpdate(filterQuery, update, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexes(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexes(options);\n\t}\n\n\tindexExists(indexes: string | string[], options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexExists(indexes, options);\n\t}\n\n\tinsertMany(docs: any[], options?: CollectionInsertManyOptions): Promise<T[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertMany(docs, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tlet ids = [];\n\t\t\t\t\tObject.keys(res.insertedIds).forEach(key => {\n\t\t\t\t\t\tif (res.insertedIds[key]) {\n\t\t\t\t\t\t\tids.push(res.insertedIds[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(docs);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tinsertOne(doc: object, options?: CollectionInsertOneOptions): Promise<string> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertOne(doc, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(res.insertedId);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tlistIndexes(options?: { batchSize?: number; readPreference?: ReadPreferenceOrMode; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).listIndexes(options);\n\t}\n\n\treIndex(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).reIndex(options);\n\t}\n\n\trename(newName: string, options?: { dropTarget?: boolean; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).rename(newName, options);\n\t}\n\n\treplaceOne(filter: FilterQuery<any>, doc: any, options?: ReplaceOneOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, doc, options);\n\t}\n\n\tstats(options?: { scale: number; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).stats(options);\n\t}\n\n\tupdateMany(filter: FilterQuery<any>, update: UpdateQuery<any> | Partial<any>, options?: UpdateManyOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).updateMany(filter, update, options);\n\t}\n\n\tupdateOne(filter: FilterQuery<any>, update: UpdateQuery<any> | Partial<any>, options?: UpdateOneOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options);\n\t}\n\t\n\twatchCollection(options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(options);\n\t}\n\n\twatchCollectionWithAggregate(pipeline?: object[], options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(pipeline, options);\n\t}\n}\n\nexport class UserCollection<T> extends Collection<T> {\n\tauthenticate(user, password) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tconst attemptsInterval = Math.pow(100, Math.log(user.attempts + 1));\n\t\t\tconst calculatedInterval = attemptsInterval < 300000 ? attemptsInterval : 300000;\n\t\t\n\t\t\tif (Date.now() - user.last < calculatedInterval) {\n\t\t\t\tuser.last = Date.now();\n\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last}});\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'Attempt Too Soon'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\tif (user.attempts >= 5) {\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'Too Many Attempts'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif (!user.salt) {\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'No Salt Value Stored'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tpbkdf2(password, user.salt, {\n\t\t\t\titerations: 25000,\n\t\t\t\tkeylen: 512,\n\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t}, async (err, hashBuffer) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treturn reject(err);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif (scmp(hashBuffer, Buffer.from(user.hash, 'hex'))) {\n\t\t\t\t\tuser.last = Date.now();\n\t\t\t\t\tuser.attempts = 0;\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tdata: user,\n\t\t\t\t\t\terror: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser.last = Date.now();\n\t\t\t\t\tuser.attempts = user.attempts + 1;\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\t\tif (user.attempts >= 5) {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\terror: 'Too Many Attempts'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\terror: 'Invalid Username And Password'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t});\n\t\t});\n\t}\n\n\tserializeUser(user, cb) {\n\t\tcb(null, user.username);\n\t}\n\t\n\tdeserializeUser(username, cb) {\n\t\tUsers.findOne({username: username}).then(res => {\n\t\t\tcb(null, res);\n\t\t}, err => {\n\t\t\tcb(err, null);\n\t\t});\n\t}\n\n\tsetPassword(user: UserModel, password: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user) {\n\t\t\t\treject('No User');\n\t\t\t}\n\t\t\telse if (!password) {\n\t\t\t\treject('No Password');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet saltBuffer = await randomBytes(32);\n\t\t\t\tlet salt = saltBuffer.toString('hex');\n\t\t\t\tlet hashRaw = await pbkdf2Promisified(password, salt, {\n\t\t\t\t\titerations: 25000,\n\t\t\t\t\tkeylen: 512,\n\t\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t\t});\n\t\t\t\tlet hash = Buffer.from(hashRaw, 'binary').toString('hex');\n\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {hash: hash, salt: salt, services: {}}});\n\t\t\t}\n\t\t});\n\t};\n\n\tchangePassword(user, oldPassword, newPassword) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user) {\n\t\t\t\treject('Missing User');\n\t\t\t}\n\t\t\telse if (!oldPassword || !newPassword) {\n\t\t\t\treject('Missing Password');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet authUser = await this.authenticate(user, oldPassword);\n\n\t\t\t\tif (!authUser['data']) {\n\t\t\t\t\treject(authUser['error']);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.setPassword(user, newPassword);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tregister(user, password) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user.username) {\n\t\t\t\treject('Missing Username');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet dbUser = await Users.findOne({username: user.username});\n\t\t\t\t\n\t\t\t\tif (dbUser) {\n\t\t\t\t\treject('Username Exists');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdbUser = await Users.findOne({email: user.email});\n\n\t\t\t\t\tif (dbUser) {\n\t\t\t\t\t\treject('Email Exists');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tuser.setPassword(password);\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tresetAttempts(user: UserModel) {\n\t\treturn Users.updateOne({_id: user._id}, {$set: {attempts: 0}});\n\t}\n}\n\nexport function objectIdHexString() {\n\tlet objectId = new ObjectId();\n\treturn objectId.toHexString();\n}\n\nfunction pbkdf2(password, salt, options, callback) {\n\tcrypto.pbkdf2(password, salt, options.iterations, options.keylen, options.digestAlgorithm, callback);\n};\n\nfunction pbkdf2Promisified(password, salt, options): Promise<any> {\n\treturn new Promise((resolve, reject) => pbkdf2(password, salt, options, (err, hashRaw) => (err ? reject(err) : resolve(hashRaw))));\n}\n\nfunction randomBytes(saltlen): Promise<Buffer> {\n\treturn new Promise((resolve, reject) => crypto.randomBytes(saltlen, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))));\n}"]}
1
+ {"version":3,"sources":["../../src/managers/mongo.manager.ts"],"names":[],"mappings":"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","file":"mongo.manager.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { ChangeStreamOptions, ClientSession, CollectionAggregationOptions, CollectionInsertManyOptions, CollectionInsertOneOptions, CommonOptions, FilterQuery, FindOneAndDeleteOption, FindOneAndReplaceOption, FindOneAndUpdateOption, FindOneOptions, IndexOptions, IndexSpecification, MongoCountPreferences, MongoDistinctPreferences, ReadPreferenceOrMode, ReplaceOneOptions, UpdateManyOptions, UpdateOneOptions, UpdateQuery, ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nimport { ResolveIOServer } from '../index';\nimport { Users } from '../collections/user.collection';\nimport { buildRbLookups, buildRbSchema, deepCopy } from '../util/common';\nimport { UserModel } from '../models/user.model';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\n\nexport class MongoManager {\n\tprivate _server;\n\tprivate _collections: Collection<any>[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._server = mainServer;\n\t}\n\n\tregisterCollection(collection: Collection<any>) {\n\t\tthis._collections.push(collection);\n\t}\n\n\tcollections() {\n\t\treturn this._collections;\n\t}\n\n\tcollection(collectionName: string) {\n\t\treturn this._collections.filter(a => a.collectionName === collectionName)[0];\n\t}\n}\n\nexport class Model<T> {\n\tcollection_main: Collection<T> | UserCollection<T> = null;\n\tcollection_version: Collection<T> | UserCollection<T> = null;\n\n\tconstructor(collectionName: string, schema: object, useVersionCollection = false, useReportBuilder = true, reportBuilderLookupTables: LookupTables[] = [], timestamps = true) {\n\t\tif (collectionName === 'users') {\n\t\t\tthis.collection_main = new UserCollection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps);\n\t\t}\n\t\telse {\n\t\t\tthis.collection_main = new Collection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps);\n\t\t}\n\n\t\tif (useVersionCollection) {\n\t\t\tlet versionSchema = deepCopy(schema);\n\t\t\tversionSchema['_id'].type = 'Object';\n\t\t\tversionSchema['_id'].blackbox = true;\n\n\t\t\tif (collectionName === 'users') {\n\t\t\t\tthis.collection_version = new UserCollection<T>(collectionName + '.versions', versionSchema, false);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.collection_version = new Collection<T>(collectionName + '.versions', versionSchema, false);\n\t\t\t}\n\t\t\tthis.collection_version.createIndex({'_id.__v': 1, '_id._id': 1});\n\t\t\tthis.collection_main.versionCollection = collectionName + '.versions';\n\t\t}\n\t}\n}\n\nexport class Collection<T> {\n\tcollectionName = '';\n\tsimplschema = null;\n\trbSchema = null;\n\ttimestamps = false;\n\tversionKey = '';\n\tversionCollection = '';\n\t\n\tconstructor(collectionName: string, schema: object, useReportBuilder = true, reportBuilderLookupTables: LookupTables[] = [], timestamps = true) {\n\t\tthis.collectionName = collectionName;\n\t\tthis.simplschema = new SimpleSchema(schema);\n\t\tthis.timestamps = timestamps;\n\n\t\tif (useReportBuilder) {\n\t\t\tlet schemaCopy = deepCopy(schema);\n\t\t\tlet rbSchema = buildRbLookups(reportBuilderLookupTables, schemaCopy, []);\n\t\t\tthis.rbSchema = buildRbSchema(rbSchema);\n\t\t}\n\t}\n\n\taggregate(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).toArray();\n\t}\n\n\taggregateCount(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).count();\n\t}\n\n\taggregateCursor(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options);\n\t}\n\n\taggregateStream(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).stream();\n\t}\n\n\tcountDocuments(filterQuery: FilterQuery<any> = {}, options?: MongoCountPreferences) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).countDocuments(filterQuery, options);\n\t}\n\n\tcreate(f_docs: any[] | object, options?: CollectionInsertManyOptions): Promise<T[]> {\n\t\tlet docs = [];\n\n\t\tif (!Array.isArray(f_docs)) {\n\t\t\tdocs = [f_docs];\n\t\t}\n\n\t\treturn this.insertMany(docs, options);\n\t}\n\n\tcreateIndex(fieldOrSpec: any, options?: IndexOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndex(fieldOrSpec, options);\n\t}\n\n\tcreateIndexes(indexSpecs: IndexSpecification[], options?: { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndexes(indexSpecs, options);\n\t}\n\n\tdeleteMany(filterQuery: FilterQuery<any> = {}, options?: CommonOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).deleteMany(filterQuery, options);\n\t}\n\n\tdeleteOne(filterQuery: FilterQuery<any> = {}, options?: CommonOptions & { bypassDocumentValidation?: boolean; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).deleteOne(filterQuery, options);\n\t}\n\n\tdistinct(key: string, query?: FilterQuery<any>, options?: MongoDistinctPreferences): Promise<T[]> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).distinct(key, query, options);\n\t}\n\n\tdrop(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).drop(options);\n\t}\n\n\tdropIndex(indexName: string, options?: CommonOptions & { maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndex(indexName, options);\n\t}\n\n\tdropIndexes(options?: { session?: ClientSession; maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndexes(options);\n\t}\n\n\tfind(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>): Promise<T[]> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filterQuery, options).toArray();\n\t}\n\n\tfindById(id: string, options?: FindOneOptions<any>): Promise<T> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne({_id: id}, options);\n\t}\n\n\tfindCount(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filterQuery, options).count();\n\t}\n\n\tfindCursor(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filterQuery, options);\n\t}\n\n\tfindStream(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>, streamOptions?: any) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filterQuery, options).stream(streamOptions);\n\t}\n\n\tfindOne(filterQuery: FilterQuery<any> = {}, options?: FindOneOptions<any>): Promise<T> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne(filterQuery, options);\n\t}\n\n\tfindOneAndDelete(filterQuery: FilterQuery<any> = {}, options?: FindOneAndDeleteOption<any>): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndDelete(filterQuery, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndReplace(filterQuery: FilterQuery<any> = {}, replacement: object, options?: FindOneAndReplaceOption<any>): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndReplace(filterQuery, replacement, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndUpdate(filterQuery: FilterQuery<any> = {}, update: any, options?: FindOneAndUpdateOption<any>): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndUpdate(filterQuery, update, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexes(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexes(options);\n\t}\n\n\tindexExists(indexes: string | string[], options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexExists(indexes, options);\n\t}\n\n\tinsertMany(docs: any[], options?: CollectionInsertManyOptions): Promise<T[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertMany(docs, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(docs);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tinsertOne(doc: object, options?: CollectionInsertOneOptions): Promise<string> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertOne(doc, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(res.insertedId);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tlistIndexes(options?: { batchSize?: number; readPreference?: ReadPreferenceOrMode; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).listIndexes(options);\n\t}\n\n\treIndex(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).reIndex(options);\n\t}\n\n\trename(newName: string, options?: { dropTarget?: boolean; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).rename(newName, options);\n\t}\n\n\treplaceOne(filter: FilterQuery<any>, doc: any, options?: ReplaceOneOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, doc, options);\n\t}\n\n\tstats(options?: { scale: number; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).stats(options);\n\t}\n\n\tupdateMany(filter: FilterQuery<any>, update: UpdateQuery<any> | Partial<any>, options?: UpdateManyOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).updateMany(filter, update, options);\n\t}\n\n\tupdateOne(filter: FilterQuery<any>, update: UpdateQuery<any> | Partial<any>, options?: UpdateOneOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options);\n\t}\n\t\n\twatchCollection(options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(options);\n\t}\n\n\twatchCollectionWithAggregate(pipeline?: object[], options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(pipeline, options);\n\t}\n}\n\nexport class UserCollection<T> extends Collection<T> {\n\tauthenticateStrategy() {\n\t\treturn async (username, password, cb) => {\n\t\t\tlet user = await Users.findOne({username: username});\n\t\t\tthis.authenticate(user, password).then(authUser => {\n\t\t\t\tif (authUser.data) {\n\t\t\t\t\tcb(null, user, null);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcb(null, null, authUser.error);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tcb(err, null, null);\n\t\t\t})\n\t\t};\n\t}\n\n\tauthenticate(user, password): Promise<{data: UserModel, error: string}> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tconst attemptsInterval = Math.pow(100, Math.log(user.attempts + 1));\n\t\t\tconst calculatedInterval = attemptsInterval < 300000 ? attemptsInterval : 300000;\n\t\t\n\t\t\tif (Date.now() - user.last < calculatedInterval) {\n\t\t\t\tuser.last = Date.now();\n\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last}});\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'Attempt Too Soon'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\n\t\t\tif (user.attempts >= 5) {\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'Too Many Attempts'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif (!user.salt) {\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'No Salt Value Stored'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tpbkdf2(password, user.salt, {\n\t\t\t\titerations: 25000,\n\t\t\t\tkeylen: 512,\n\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t}, async (err, hashBuffer) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treturn reject(err);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif (scmp(hashBuffer, Buffer.from(user.hash, 'hex'))) {\n\t\t\t\t\tuser.last = Date.now();\n\t\t\t\t\tuser.attempts = 0;\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tdata: user,\n\t\t\t\t\t\terror: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser.last = Date.now();\n\t\t\t\t\tuser.attempts = user.attempts + 1;\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\t\tif (user.attempts >= 5) {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\terror: 'Too Many Attempts'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\terror: 'Invalid Username And Password'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t});\n\t\t});\n\t}\n\n\tserializeUser() {\n\t\treturn (user, cb) => {\n\t\t\tcb(null, user.username);\n\t\t};\n\t}\n\n\tdeserializeUser() {\n\t\treturn (username, cb) => {\n\t\t\tUsers.findOne({username: username}).then(res => {\n\t\t\t\tcb(null, res);\n\t\t\t}, err => {\n\t\t\t\tcb(err, null);\n\t\t\t});\n\t\t};\n\t}\n\n\tsetPassword(user: UserModel, password: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user) {\n\t\t\t\treject('No User');\n\t\t\t}\n\t\t\telse if (!password) {\n\t\t\t\treject('No Password');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet saltBuffer = await randomBytes(32);\n\t\t\t\tlet salt = saltBuffer.toString('hex');\n\t\t\t\tlet hashRaw = await pbkdf2Promisified(password, salt, {\n\t\t\t\t\titerations: 25000,\n\t\t\t\t\tkeylen: 512,\n\t\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t\t});\n\t\t\t\tlet hash = Buffer.from(hashRaw, 'binary').toString('hex');\n\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {hash: hash, salt: salt, services: {}}});\n\t\t\t}\n\t\t});\n\t};\n\n\tchangePassword(user, oldPassword, newPassword) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user) {\n\t\t\t\treject('Missing User');\n\t\t\t}\n\t\t\telse if (!oldPassword || !newPassword) {\n\t\t\t\treject('Missing Password');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet authUser = await this.authenticate(user, oldPassword);\n\n\t\t\t\tif (!authUser['data']) {\n\t\t\t\t\treject(authUser['error']);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.setPassword(user, newPassword);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tregister(user, password) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user.username) {\n\t\t\t\treject('Missing Username');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet dbUser = await Users.findOne({username: user.username});\n\t\t\t\t\n\t\t\t\tif (dbUser) {\n\t\t\t\t\treject('Username Exists');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdbUser = await Users.findOne({email: user.email});\n\n\t\t\t\t\tif (dbUser) {\n\t\t\t\t\t\treject('Email Exists');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tuser.setPassword(password);\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tresetAttempts(user: UserModel) {\n\t\treturn Users.updateOne({_id: user._id}, {$set: {attempts: 0}});\n\t}\n}\n\nexport function objectIdHexString() {\n\tlet objectId = new ObjectId();\n\treturn objectId.toHexString();\n}\n\nfunction pbkdf2(password, salt, options, callback) {\n\tcrypto.pbkdf2(password, salt, options.iterations, options.keylen, options.digestAlgorithm, callback);\n};\n\nfunction pbkdf2Promisified(password, salt, options): Promise<any> {\n\treturn new Promise((resolve, reject) => pbkdf2(password, salt, options, (err, hashRaw) => (err ? reject(err) : resolve(hashRaw))));\n}\n\nfunction randomBytes(saltlen): Promise<Buffer> {\n\treturn new Promise((resolve, reject) => crypto.randomBytes(saltlen, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))));\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "9.0.1",
3
+ "version": "9.0.3",
4
4
  "description": "",
5
5
  "main": "index.ts",
6
6
  "scripts": {
package/server-app.d.ts CHANGED
@@ -2,12 +2,12 @@
2
2
  import { Server } from 'http';
3
3
  import * as express from 'express';
4
4
  import * as WebSocket from 'ws';
5
+ import { MongoManager } from './managers/mongo.manager';
5
6
  import { CronManager } from './managers/cron.manager';
6
7
  import { MethodManager } from './managers/method.manager';
7
8
  import { SubscriptionManager } from './managers/subscription.manager';
8
9
  import { QueueMethodManager } from './managers/queue-method.manager';
9
10
  import { MonitorManager } from './managers/monitor.manager';
10
- import { MongoManager } from './managers/mongo.manager';
11
11
  export default class ResolveIOMainServer {
12
12
  private _app;
13
13
  private _server;
package/server-app.js CHANGED
@@ -53,22 +53,22 @@ var WebSocket = require("ws");
53
53
  var jwt = require("jsonwebtoken");
54
54
  var uuid = require("uuid/v4");
55
55
  var SegfaultHandler = require("segfault-handler");
56
- var auth_1 = require("./http/auth");
57
- var common_1 = require("./util/common");
58
- var health_1 = require("./http/health");
59
- var method_call_collection_1 = require("./collections/method-call.collection");
60
- var method_response_collection_1 = require("./collections/method-response.collection");
61
- var log_collection_1 = require("./collections/log.collection");
62
56
  var moment = require("moment");
63
- var user_collection_1 = require("./collections/user.collection");
57
+ var common_1 = require("./util/common");
58
+ var mongo_manager_1 = require("./managers/mongo.manager");
64
59
  var cron_manager_1 = require("./managers/cron.manager");
65
60
  var method_manager_1 = require("./managers/method.manager");
66
61
  var subscription_manager_1 = require("./managers/subscription.manager");
67
62
  var queue_method_manager_1 = require("./managers/queue-method.manager");
63
+ var monitor_manager_1 = require("./managers/monitor.manager");
64
+ var method_call_collection_1 = require("./collections/method-call.collection");
65
+ var method_response_collection_1 = require("./collections/method-response.collection");
66
+ var log_collection_1 = require("./collections/log.collection");
68
67
  var log_method_latency_collection_1 = require("./collections/log-method-latency.collection");
68
+ var user_collection_1 = require("./collections/user.collection");
69
69
  var home_1 = require("./http/home");
70
- var monitor_manager_1 = require("./managers/monitor.manager");
71
- var mongo_manager_1 = require("./managers/mongo.manager");
70
+ var auth_1 = require("./http/auth");
71
+ var health_1 = require("./http/health");
72
72
  var ResolveIOMainServer = /** @class */ (function () {
73
73
  function ResolveIOMainServer(mainServer, monitorAgent, serverConfig, clientRoutes, clientDir, sesMail, standardProgram) {
74
74
  var _this = this;
@@ -390,7 +390,7 @@ var ResolveIOMainServer = /** @class */ (function () {
390
390
  // Set up login passort
391
391
  this._app.use(passport.initialize());
392
392
  // Start user authentication
393
- passport.use(new passportlocal.Strategy(user_collection_1.Users.authenticate()));
393
+ passport.use(new passportlocal.Strategy(user_collection_1.Users.authenticateStrategy()));
394
394
  passport.serializeUser(user_collection_1.Users.serializeUser());
395
395
  passport.deserializeUser(user_collection_1.Users.deserializeUser());
396
396
  }
package/server-app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/server-app.ts"],"names":[],"mappings":"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","file":"server-app.js","sourcesContent":["import { createServer, Server } from 'http';\nimport * as express from 'express';\nimport * as bodyParser from 'body-parser';\nimport * as xmlParser from 'express-xml-bodyparser';\nimport * as passport from 'passport';\nimport * as passportlocal from 'passport-local';\nimport * as WebSocket from 'ws';\nimport * as jwt from 'jsonwebtoken';\nimport * as uuid from 'uuid/v4';\nimport * as SegfaultHandler from 'segfault-handler';\n\nimport { setupAuthRoutes } from './http/auth';\nimport { dateReviver, getBinarySize, deepCopy } from './util/common';\nimport { setupHealthRoutes } from './http/health';\n\nimport { ServerResponseModel } from './models/server-response.model';\nimport { MethodCalls } from './collections/method-call.collection';\n\nimport { MethodResponses } from './collections/method-response.collection';\nimport { Logs } from './collections/log.collection';\n\nimport * as moment from 'moment';\nimport { Users } from './collections/user.collection';\nimport { CronManager } from './managers/cron.manager';\nimport { MethodManager } from './managers/method.manager';\nimport { SubscriptionManager } from './managers/subscription.manager';\nimport { QueueMethodManager } from './managers/queue-method.manager';\nimport { LogMethodLatencies } from './collections/log-method-latency.collection';\nimport { setupHomeRoutes } from './http/home';\nimport { MonitorManager } from './managers/monitor.manager';\nimport { objectIdHexString, MongoManager } from './managers/mongo.manager';\n\nexport default class ResolveIOMainServer {\n\tprivate _app: express.Application;\n\tprivate _server: Server;\n\tprivate _port: string | number;\n\tprivate _wss;\n\tprivate _serverConfig;\n\tprivate _clientDir;\n\tprivate _msgQueue = [];\n\tprivate _msgQueueRunning = false;\n\tpublic sesMail = false;\n\tprivate standardProgram = false;\n\n\tprivate LOGGER = 'ERROR'; //ERROR / DEBUG\n\n\tprivate _mongoManager: MongoManager;\n\tprivate _monitorManager: MonitorManager;\n\tprivate _subscriptionManager: SubscriptionManager;\n\tprivate _methodManager: MethodManager;\n\tprivate _queueManager: QueueMethodManager;\n\tprivate _cronManager: CronManager;\n\tprivate _clientRoutes: string[] = [];\n\n\tprivate _serverStartTime: Date;\n\tprivate _lastErrorMsg: Date = null;\n\n\tconstructor(mainServer, monitorAgent, serverConfig, clientRoutes, clientDir, sesMail, standardProgram) {\n\t\tthis._serverConfig = serverConfig;\n\t\tthis._clientRoutes = clientRoutes;\n\t\tthis._clientDir = clientDir;\n\t\tthis.sesMail = sesMail;\n\t\tthis.standardProgram = standardProgram;\n\n\t\tthis._serverStartTime = new Date();\n\t\tthis._lastErrorMsg = null;\n\n\t\tthis._mongoManager = new MongoManager(mainServer);\n\t\t\n\t\tif (serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\tthis._monitorManager = new MonitorManager(mainServer, monitorAgent, serverConfig);\n\t\t}\n\n\t\tprocess.on('unhandledRejection', async (error, rej) => {\n\t\t\t// console.error('Unhandled Rejection at Promise', [error, rej]);\n\n\t\t\tlet diffTimeSec = moment().diff(this._serverStartTime, 'seconds');\n\n\t\t\tif (error && error['name'] === 'MissingSchemaError') {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\n\t\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection -Quitting NodeJS - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t\t}\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\telse if (error && error['name'] === 'MongoError' && error['message'] === 'not master') {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\n\t\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection - Quitting NodeJS - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t\t}\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\telse if (error && error['name'] === 'MongoError' && error['message'] === 'not master and slaveOk=false') {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\n\t\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection - Quitting NodeJS - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t\t}\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\telse if (error) {\n\t\t\t\tif (error['name'] !== 'StatusError' && error['message'] !== '') {\n\t\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t\t}, 60000);\n\n\t\t\t\t\t\tthis._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tprocess.on('uncaughtException', async error => {\n\t\t\tconsole.error(error, 'Uncaught Exception thrown');\n\n\t\t\tlet diffTimeSec = moment().diff(this._serverStartTime, 'seconds');\n\n\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t}, 60000);\n\t\t\t\t\n\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Exception - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t}\n\n\t\t\tprocess.exit(1);\n\t\t});\n\n\t\tSegfaultHandler.registerHandler('crash.log', async (signal, address, stack) => {\n\t\t\t// Do what you want with the signal, address, or stack (array)\n\t\t\t// This callback will execute before the signal is forwarded on.\n\n\t\t\tconsole.log('Segment Fault Detected');\n\t\t\tconsole.log('Signal', JSON.stringify(signal, null, 2));\n\t\t\tconsole.log('Address', JSON.stringify(address, null, 2));\n\t\t\tconsole.log('Stack', JSON.stringify(stack, null, 2));\n\n\t\t\tlet diffTimeSec = moment().diff(this._serverStartTime, 'seconds');\n\n\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Segfault - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([signal, address, stack], null, 2));\n\t\t\t}\n\n\t\t\tprocess.exit(1);\n\t\t});\n\n\t\t//SegfaultHandler.causeSegfault(); // simulates a buggy native module that dereferences NULL\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Starting ResolveIO Server');\n\t\t}\n\n\t\t// Start express app\n\t\tthis._app = express();\n\n\t\t// Use body parser for http call (login)\n\t\tthis._app.use(bodyParser.json({limit: '50mb', reviver: dateReviver}));\n\t\tthis._app.use(bodyParser.urlencoded({limit: '50mb', extended: true, parameterLimit: 1000000 }));\n\t\tthis._app.use(xmlParser());\n\t\t\n\t\t// Set port\n\t\tthis._port = process.env.PORT || serverConfig['PORT'];\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Setup ports');\n\t\t}\n\n\t\t// Create http server and websock server\n\t\tthis.createServer();\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Create server');\n\t\t}\n\t\t\n\t\t// Set CORS\n\t\tthis._app.use(function (req, res, next) {\n\n\t\t\t// Website you wish to allow to connect\n\t\t\t// res.setHeader('Access-Control-Allow-Origin', serverConfig['ROOT_URL']);\n\t\t\tres.setHeader('Access-Control-Allow-Origin', '*');\n\t\t\n\t\t\t// Request methods you wish to allow\n\t\t\t// res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');\n\t\t\tres.setHeader('Access-Control-Allow-Methods', 'GET, POST');\n\t\t\n\t\t\t// Request headers you wish to allow\n\t\t\tres.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');\n\t\t\n\t\t\t// Set to true if you need the website to include cookies in the requests sent\n\t\t\t// to the API (e.g. in case you use sessions)\n\t\t\tres.setHeader('Access-Control-Allow-Credentials', 'false');\n\t\t\n\t\t\t// Pass to next layer of middleware\n\t\t\tnext();\n\t\t});\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Setup cors');\n\t\t}\n\n\t\t// Set up http login route\n\t\tsetupAuthRoutes(this, this._app, serverConfig);\n\t\tsetupHealthRoutes(this._app, serverConfig);\n\n\t\tif (serverConfig['CLIENT_NAME'] === 'ResolveIO' || this.standardProgram) {\n\t\t\tsetupHomeRoutes(this, this._app, serverConfig);\n\t\t}\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Setup express routes');\n\t\t}\n\t}\n\n\tpublic getWS(id_ws: string) {\n\t\tlet res = null;\n\n\t\tthis._wss.clients.forEach((ws: WebSocket) => {\n\t\t\tif (ws['id_socket'] === id_ws) {\n\t\t\t\tres = ws;\n\t\t\t}\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tpublic getWSList() {\n\t\tlet res = [];\n\n\t\tthis._wss.clients.forEach((ws: WebSocket) => {\n\t\t\tres.push(ws['id_socket']);\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tpublic getWSUserList() {\n\t\tlet res = [];\n\n\t\tthis._wss.clients.forEach((ws: WebSocket) => {\n\t\t\tres.push(ws['id_user']);\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tpublic getHTTPServer() {\n\t\treturn this._server;\n\t}\n\n\tpublic getCronManager() {\n\t\treturn this._cronManager;\n\t}\n\n\tpublic getMethodManager() {\n\t\treturn this._methodManager;\n\t}\n\n\tpublic getSubscriptionManager() {\n\t\treturn this._subscriptionManager;\n\t}\n\n\tpublic getQueueManager() {\n\t\treturn this._queueManager;\n\t}\n\n\tpublic getMonitorManager() {\n\t\treturn this._monitorManager;\n\t}\n\n\tpublic getMongoServer() {\n\t\treturn this._mongoManager;\n\t}\n\n\tprivate createServer(): void {\n\t\t// Start express server\n\t\tthis._server = createServer(this._app);\n\t\tthis._server.keepAliveTimeout = 65000;\n\t\tthis._server.headersTimeout = 66000; // This should be bigger than `keepAliveTimeout + your server's expected response time`\n\n\t\t// Start websocket server\n\t\t// Verify client with token before opening socket\n\t\tthis._wss = new WebSocket.Server({ \n\t\t\tserver: this._server,\n\t\t\tverifyClient: async (info, cb) => {\n\t\t\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\t\t\tconsole.log('Verify Client', info, cb);\n\t\t\t\t}\n\n\t\t\t\tlet infoData = (<string>info.req.headers['sec-websocket-protocol']).split(/,/);\n\n\t\t\t\tif (info.origin !== this._serverConfig['ROOT_URL'] && info.origin !== this._serverConfig['SEC_ROOT_URL'] && info.origin !== this._serverConfig['RESOLVEIO_URL'] && info.origin !== this._serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (infoData[1]) { //app version\n\t\t\t\t\t\tlet token = infoData[0];\n\t\t\t\t\t\tif (!token) {\n\t\t\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tjwt.verify(token, this._serverConfig['JWT_SECRET'], async (err, decoded) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tinfo.req['id_user'] = decoded['id_user'];\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tlet user = await Users.findById(decoded['id_user']);\n\t\t\t\t\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\t\t\t\t\tinfo.req['user'] = user.fullname;\n\t\t\t\t\t\t\t\t\t\t\tinfo.req['user_readonly'] = user.readonly || false;\n\t\t\t\t\t\t\t\t\t\t\tinfo.req['doc_user'] = user;\n\t\t\t\t\t\t\t\t\t\t\tcb(true);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tcb(false);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\t\t\t\tcb(false);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcb(false, 401, 'Invalid Version');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Start MongoDB Connection\n\t\tthis.setUpMongo();\n\t}\n\n\tprivate setUpMongo() {\n\t\tthis.setUpPassport();\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Start Managers');\n\t\t}\n\n\t\t// Start Managers\n\t\tthis._subscriptionManager = new SubscriptionManager(this, this._wss, this._serverConfig);\n\t\tthis._methodManager = new MethodManager(this, this._serverConfig, this._clientDir);\n\t\tthis._cronManager = new CronManager(this);\n\t\tthis._queueManager = new QueueMethodManager(this);\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('End Managers');\n\t\t}\n\n\t\tthis.listen();\n\t}\n\n\tprivate setUpPassport(): void {\n\t\tif (Users) {\n\t\t\t// Set up login passort\n\t\t\tthis._app.use(passport.initialize());\n\n\t\t\t// Start user authentication\n\t\t\tpassport.use(new passportlocal.Strategy((<any>Users).authenticate()));\n\t\t\tpassport.serializeUser((<any>Users).serializeUser());\n\t\t\tpassport.deserializeUser((<any>Users).deserializeUser());\n\t\t}\n\t\telse {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.setUpPassport();\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\n\t// Listen to port for websocket\n\tprivate listen(): void {\n\t\tthis._server.listen(this._port, () => {\n\t\t\tconsole.log('Running server on port %s', this._port);\n\t\t});\n\n\t\t// On websocket connection (already verified)\n\t\tthis._wss.on('connection', (ws, req) => {\n\n\t\t\t// Get user from token\n\t\t\tws['id_user'] = req.id_user;\n\t\t\tws['user'] = req.user;\n\t\t\tws['user_readonly'] = req.user_readonly;\n\t\t\tws['doc_user'] = req.doc_user;\n\t\t\tws['id_socket'] = uuid();\n\t\t\tws['retryCnt'] = 0;\n\n\t\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\t\tconsole.log('Connection from: ' + req.user);\n\t\t\t}\n\t\t\t\n\t\t\t// Use for keeping connection alive (ping/pong)\n\t\t\tws['isAlive'] = true;\n\t\t\tws.on('pong', () => {\n\t\t\t\tws['isAlive'] = true;\n\t\t\t\tws['pongTime'] = new Date();\n\t\t\t\tws['latency'] = moment.duration(moment(ws['pongTime']).diff(ws['pingTime'])).asMilliseconds();\n\t\t\t\tthis._subscriptionManager.loggedInLatency(ws);\n\t\t\t});\n\n\t\t\tws['versionTimer'] = setTimeout(() => {\n\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t}, 10000);\n\n\t\t\t// On data received (message)\n\t\t\tws.on('message', async (message: string) => {\n\t\t\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\t\t\tconsole.log('Message from: ' + ws['user'], message);\n\t\t\t\t}\n\n\t\t\t\tlet parseErrorFound = false;\n\n\t\t\t\tlet socketData = null;\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tsocketData = JSON.parse(message, dateReviver);\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\tconsole.log('Error - JSON.parse', message);\n\t\t\t\t\t\n\t\t\t\t\tthis._methodManager.sendEmail('dev@resolveio.com', 'SERVER - JSON Parse Error - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([message, e]));\n\n\t\t\t\t\tparseErrorFound = true;\n\t\t\t\t}\n\n\t\t\t\tif (!parseErrorFound) {\n\t\t\t\t\tlet data = deepCopy(socketData);\n\n\t\t\t\t\tif (data[0] === 'ping') {\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tws.send('pong', (error) => {\n\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet messageRoute = data.shift();\n\n\t\t\t\t\tif (this._clientRoutes.some(a => messageRoute.includes(a)) && !ws['doc_user'].roles.groups.some(a => a.views.some(b => messageRoute.includes(b))) && !ws['doc_user'].roles.super_admin) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet messageDate = data.shift();\n\t\t\t\t\tlet messageId = data.shift();\n\t\t\t\t\tlet type = data.shift();\n\n\t\t\t\t\tif (type === 'subscription') {\n\t\t\t\t\t\tlet subType = data.shift();\n\t\t\t\t\t\tlet pub = data.shift();\n\t\t\n\t\t\t\t\t\t// Subscribe\n\t\t\t\t\t\tif (subType === 'sub') {\n\t\t\t\t\t\t\tthis._subscriptionManager.subscribe(messageDate, ws, messageId, pub, ...data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Unsubscribe\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._subscriptionManager.unsubscribe(messageDate, ws, messageId, pub, ...data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._msgQueue.splice(0, 0, {\n\t\t\t\t\t\t\tws: ws,\n\t\t\t\t\t\t\tdata: socketData\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tws.on('close', () => {\n\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t});\n\n\t\t\tws.on('error', error => {\n\t\t\t\tconsole.log(error);\n\t\t\t\t\n\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t});\n\t\t});\n\n\t\t// Keep alive timer to ping/pong\n\t\tsetInterval(() => {\n\t\t\tthis._wss.clients.forEach((ws: WebSocket) => {\n\t\t\t\tif (ws['isAlive'] === false) {\n\t\t\t\t\tws['retryCnt']++;\n\n\t\t\t\t\tif (ws['retryCnt'] >= 60) {\n\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tws['pingTime'] = new Date();\n\t\t\t\t\t\tws.ping(() => {});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tws['retryCnt'] = 0;\n\t\t\t\t\tws['isAlive'] = false;\n\t\t\t\t\tws['pingTime'] = new Date();\n\t\t\t\t\tws.ping(() => {});\n\t\t\t\t}\n\t\t\t});\n\t\t}, 5000);\n\n\t\tsetInterval(async () => {\n\t\t\t// console.log(data);\n\n\t\t\tif (!this._msgQueueRunning) {\n\t\t\t\tthis._msgQueueRunning = true;\n\t\t\t\t\n\t\t\t\tfor (let i = this._msgQueue.length - 1; i >= 0; i--) {\n\t\t\t\t\tlet msg = this._msgQueue.pop();\n\t\t\t\t\tlet data = msg.data;\n\t\t\t\t\tlet ws = msg.ws;\n\t\t\n\t\t\t\t\tlet messageRoute = data.shift();\n\t\t\t\t\tlet messageDate = data.shift();\n\t\t\t\t\tlet messageId = data.shift();\n\t\t\t\t\tlet type = data.shift();\n\t\t\n\t\t\t\t\t// Method call\n\t\t\t\t\tif (type === 'method') {\n\t\t\t\t\t\tlet method = data.shift();\n\t\t\n\t\t\t\t\t\tif (method === 'setWSAppVersion') {\n\t\t\t\t\t\t\tclearTimeout(ws['versionTimer']);\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif (method === 'disconnectWSCommand') {\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t}, 5000);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ws['user_readonly']) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet methodLatencyId = objectIdHexString();\n\n\t\t\t\t\t\tLogMethodLatencies.create({\n\t\t\t\t\t\t\t_id: methodLatencyId,\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\t\t\tdate_end: null,\n\t\t\t\t\t\t\tlatency_ms: 0,\n\t\t\t\t\t\t\tmethod: method\n\t\t\t\t\t\t});\n\t\t\n\t\t\t\t\t\tif (method !== 'reportBuilderGetResults' && method !== 'reportBuilderGetDistinctValue' && method !== 'reportBuilderBuildTree' && method !== 'generatePDF' && method !== 'getWOOfflineData' && method !== 'countQuery' && method !== 'countWithQuery' && method !== 'countCollectionWithQuery' && method !== 'find' && method !== 'findOne' && method !== 'findWithOptions' && method !== 'setWSAppVersion' && method !== 'getDrivers') {\n\t\t\t\t\t\t\tif (getBinarySize(JSON.stringify(data)) < 200000) {\n\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\t\ttype: 'client-request',\n\t\t\t\t\t\t\t\t\ttitle: 'Client Request - Method',\n\t\t\t\t\t\t\t\t\tmessage: 'User: ' + ws['user'] + ', Type: ' + type + ', MessageId: ' + messageId + ', Method: ' + method + ', Route: ' + messageRoute,\n\t\t\t\t\t\t\t\t\tpayload: JSON.stringify(data, null, 2),\n\t\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\t\troute: messageRoute,\n\t\t\t\t\t\t\t\t\tdata_0: data[0] ? JSON.stringify(data[0]) : null,\n\t\t\t\t\t\t\t\t\tdata_1: data[1] ? JSON.stringify(data[1]) : null,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\t\ttype: 'client-request',\n\t\t\t\t\t\t\t\t\ttitle: 'Client Request - Method',\n\t\t\t\t\t\t\t\t\tmessage: 'User: ' + ws['user'] + ', Type: ' + type + ', MessageId: ' + messageId + ', Method: ' + method + ', Route: ' + messageRoute,\n\t\t\t\t\t\t\t\t\tpayload: 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\t\troute: messageRoute,\n\t\t\t\t\t\t\t\t\tdata_0: null,\n\t\t\t\t\t\t\t\t\tdata_1: null\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\tdata: 'ACK'\n\t\t\t\t\t\t};\n\t\t\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tws.send(JSON.stringify(serverRes), (error) => {\n\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif (this._methodManager._methods[method]) {\n\t\t\n\t\t\t\t\t\t\tlet query: any = {$and: [\n\t\t\t\t\t\t\t\t{id_user: ws['id_user']}, \n\t\t\t\t\t\t\t\t{message_id: messageId},\n\t\t\t\t\t\t\t\t{date: messageDate}\n\t\t\t\t\t\t\t]};\n\t\t\n\t\t\t\t\t\t\tif (method !== 'updateDocumentOffline' && method !== 'updateDocumentPropsOffline') {\n\t\t\t\t\t\t\t\tquery.$and.push({method: method});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (method === 'updateDocumentOffline') {\n\t\t\t\t\t\t\t\t\tquery.$and.push({\n\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t{method: method},\n\t\t\t\t\t\t\t\t\t\t\t{method: 'updateDocument'}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (method === 'updateDocumentPropsOffline') {\n\t\t\t\t\t\t\t\t\tquery.$and.push({\n\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t{method: method},\n\t\t\t\t\t\t\t\t\t\t\t{method: 'updateDocumentProps'}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\tlet methodCall = await MethodCalls.findOne(query);\n\t\t\n\t\t\t\t\t\t\tif (!methodCall) {\n\t\t\t\t\t\t\t\tMethodCalls.create({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\t\t\tmessage_id: messageId,\n\t\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\t\tdate: messageDate\n\t\t\t\t\t\t\t\t});\n\t\t\t\n\t\t\t\t\t\t\t\tif (this._methodManager._methods[method]) {\n\t\t\t\t\t\t\t\t\tif (this._methodManager._methods[method].skipQueue) {\n\t\t\t\t\t\t\t\t\t\tthis._methodManager.callMethod(methodLatencyId, ws, messageDate, messageId, method, ...data);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tthis._queueManager.addMethodToQueue(methodLatencyId, ws['id_socket'], ws['id_user'], ws['user'], messageDate, messageId, method, data);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tconsole.log('Could not find method: ' + method);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tMethodResponses.findOne({$and: [\n\t\t\t\t\t\t\t\t\t{id_user: ws['id_user']}, \n\t\t\t\t\t\t\t\t\t{message_id: messageId},\n\t\t\t\t\t\t\t\t\t{method: method},\n\t\t\t\t\t\t\t\t\t{date: messageDate}\n\t\t\t\t\t\t\t\t]}).then(res => {\n\t\t\t\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\t\t\t\t\tws.send(JSON.stringify(res.response), (error) => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}, err => {});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconsole.log('Could not find method: ' + method);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (type === 'methodResponse') {\n\t\t\t\t\t\tlet method = data.shift();\n\t\t\n\t\t\t\t\t\tMethodResponses.findOne({$and: [\n\t\t\t\t\t\t\t{id_user: ws['id_user']}, \n\t\t\t\t\t\t\t{message_id: messageId},\n\t\t\t\t\t\t\t{method: method},\n\t\t\t\t\t\t\t{date: messageDate}\n\t\t\t\t\t\t]}).then(res => {\n\t\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\t\t\tws.send(JSON.stringify(res.response), (error) => {\n\t\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, err => {});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._msgQueueRunning = false;\n\t\t\t}\n\t\t}, 25);\n\t}\n\n\tpublic unsubscribeWS(ws: WebSocket) {\n\t\tthis._subscriptionManager.unsubscribeAll(ws);\n\t}\n\n\tpublic getApp() {\n\t\treturn this._app;\n\t}\n}"]}
1
+ {"version":3,"sources":["../../src/server-app.ts"],"names":[],"mappings":"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","file":"server-app.js","sourcesContent":["import { createServer, Server } from 'http';\nimport * as express from 'express';\nimport * as bodyParser from 'body-parser';\nimport * as xmlParser from 'express-xml-bodyparser';\nimport * as passport from 'passport';\nimport * as passportlocal from 'passport-local';\nimport * as WebSocket from 'ws';\nimport * as jwt from 'jsonwebtoken';\nimport * as uuid from 'uuid/v4';\nimport * as SegfaultHandler from 'segfault-handler';\nimport * as moment from 'moment';\n\nimport { dateReviver, getBinarySize, deepCopy } from './util/common';\n\nimport { objectIdHexString, MongoManager } from './managers/mongo.manager';\nimport { CronManager } from './managers/cron.manager';\nimport { MethodManager } from './managers/method.manager';\nimport { SubscriptionManager } from './managers/subscription.manager';\nimport { QueueMethodManager } from './managers/queue-method.manager';\nimport { MonitorManager } from './managers/monitor.manager';\n\nimport { ServerResponseModel } from './models/server-response.model';\n\nimport { MethodCalls } from './collections/method-call.collection';\nimport { MethodResponses } from './collections/method-response.collection';\nimport { Logs } from './collections/log.collection';\nimport { LogMethodLatencies } from './collections/log-method-latency.collection';\nimport { Users } from './collections/user.collection';\n\nimport { setupHomeRoutes } from './http/home';\nimport { setupAuthRoutes } from './http/auth';\nimport { setupHealthRoutes } from './http/health';\n\nexport default class ResolveIOMainServer {\n\tprivate _app: express.Application;\n\tprivate _server: Server;\n\tprivate _port: string | number;\n\tprivate _wss;\n\tprivate _serverConfig;\n\tprivate _clientDir;\n\tprivate _msgQueue = [];\n\tprivate _msgQueueRunning = false;\n\tpublic sesMail = false;\n\tprivate standardProgram = false;\n\n\tprivate LOGGER = 'ERROR'; //ERROR / DEBUG\n\n\tprivate _mongoManager: MongoManager;\n\tprivate _monitorManager: MonitorManager;\n\tprivate _subscriptionManager: SubscriptionManager;\n\tprivate _methodManager: MethodManager;\n\tprivate _queueManager: QueueMethodManager;\n\tprivate _cronManager: CronManager;\n\tprivate _clientRoutes: string[] = [];\n\n\tprivate _serverStartTime: Date;\n\tprivate _lastErrorMsg: Date = null;\n\n\tconstructor(mainServer, monitorAgent, serverConfig, clientRoutes, clientDir, sesMail, standardProgram) {\n\t\tthis._serverConfig = serverConfig;\n\t\tthis._clientRoutes = clientRoutes;\n\t\tthis._clientDir = clientDir;\n\t\tthis.sesMail = sesMail;\n\t\tthis.standardProgram = standardProgram;\n\n\t\tthis._serverStartTime = new Date();\n\t\tthis._lastErrorMsg = null;\n\n\t\tthis._mongoManager = new MongoManager(mainServer);\n\t\t\n\t\tif (serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\tthis._monitorManager = new MonitorManager(mainServer, monitorAgent, serverConfig);\n\t\t}\n\n\t\tprocess.on('unhandledRejection', async (error, rej) => {\n\t\t\t// console.error('Unhandled Rejection at Promise', [error, rej]);\n\n\t\t\tlet diffTimeSec = moment().diff(this._serverStartTime, 'seconds');\n\n\t\t\tif (error && error['name'] === 'MissingSchemaError') {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\n\t\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection -Quitting NodeJS - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t\t}\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\telse if (error && error['name'] === 'MongoError' && error['message'] === 'not master') {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\n\t\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection - Quitting NodeJS - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t\t}\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\telse if (error && error['name'] === 'MongoError' && error['message'] === 'not master and slaveOk=false') {\n\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t}, 60000);\n\n\t\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection - Quitting NodeJS - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t\t}\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\telse if (error) {\n\t\t\t\tif (error['name'] !== 'StatusError' && error['message'] !== '') {\n\t\t\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t\t\t}, 60000);\n\n\t\t\t\t\t\tthis._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Rejection - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tprocess.on('uncaughtException', async error => {\n\t\t\tconsole.error(error, 'Uncaught Exception thrown');\n\n\t\t\tlet diffTimeSec = moment().diff(this._serverStartTime, 'seconds');\n\n\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\tthis._lastErrorMsg = new Date();\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis._lastErrorMsg = null;\n\t\t\t\t}, 60000);\n\t\t\t\t\n\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Unhandled Exception - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([error['name'], error['message'], error['stack']], null, 2));\n\t\t\t}\n\n\t\t\tprocess.exit(1);\n\t\t});\n\n\t\tSegfaultHandler.registerHandler('crash.log', async (signal, address, stack) => {\n\t\t\t// Do what you want with the signal, address, or stack (array)\n\t\t\t// This callback will execute before the signal is forwarded on.\n\n\t\t\tconsole.log('Segment Fault Detected');\n\t\t\tconsole.log('Signal', JSON.stringify(signal, null, 2));\n\t\t\tconsole.log('Address', JSON.stringify(address, null, 2));\n\t\t\tconsole.log('Stack', JSON.stringify(stack, null, 2));\n\n\t\t\tlet diffTimeSec = moment().diff(this._serverStartTime, 'seconds');\n\n\t\t\tif (diffTimeSec > 60 && !this._lastErrorMsg) {\n\t\t\t\tawait this._methodManager.sendEmail('dev@resolveio.com', 'SERVER - Segfault - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([signal, address, stack], null, 2));\n\t\t\t}\n\n\t\t\tprocess.exit(1);\n\t\t});\n\n\t\t//SegfaultHandler.causeSegfault(); // simulates a buggy native module that dereferences NULL\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Starting ResolveIO Server');\n\t\t}\n\n\t\t// Start express app\n\t\tthis._app = express();\n\n\t\t// Use body parser for http call (login)\n\t\tthis._app.use(bodyParser.json({limit: '50mb', reviver: dateReviver}));\n\t\tthis._app.use(bodyParser.urlencoded({limit: '50mb', extended: true, parameterLimit: 1000000 }));\n\t\tthis._app.use(xmlParser());\n\t\t\n\t\t// Set port\n\t\tthis._port = process.env.PORT || serverConfig['PORT'];\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Setup ports');\n\t\t}\n\n\t\t// Create http server and websock server\n\t\tthis.createServer();\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Create server');\n\t\t}\n\t\t\n\t\t// Set CORS\n\t\tthis._app.use(function (req, res, next) {\n\n\t\t\t// Website you wish to allow to connect\n\t\t\t// res.setHeader('Access-Control-Allow-Origin', serverConfig['ROOT_URL']);\n\t\t\tres.setHeader('Access-Control-Allow-Origin', '*');\n\t\t\n\t\t\t// Request methods you wish to allow\n\t\t\t// res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');\n\t\t\tres.setHeader('Access-Control-Allow-Methods', 'GET, POST');\n\t\t\n\t\t\t// Request headers you wish to allow\n\t\t\tres.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');\n\t\t\n\t\t\t// Set to true if you need the website to include cookies in the requests sent\n\t\t\t// to the API (e.g. in case you use sessions)\n\t\t\tres.setHeader('Access-Control-Allow-Credentials', 'false');\n\t\t\n\t\t\t// Pass to next layer of middleware\n\t\t\tnext();\n\t\t});\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Setup cors');\n\t\t}\n\n\t\t// Set up http login route\n\t\tsetupAuthRoutes(this, this._app, serverConfig);\n\t\tsetupHealthRoutes(this._app, serverConfig);\n\n\t\tif (serverConfig['CLIENT_NAME'] === 'ResolveIO' || this.standardProgram) {\n\t\t\tsetupHomeRoutes(this, this._app, serverConfig);\n\t\t}\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Setup express routes');\n\t\t}\n\t}\n\n\tpublic getWS(id_ws: string) {\n\t\tlet res = null;\n\n\t\tthis._wss.clients.forEach((ws: WebSocket) => {\n\t\t\tif (ws['id_socket'] === id_ws) {\n\t\t\t\tres = ws;\n\t\t\t}\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tpublic getWSList() {\n\t\tlet res = [];\n\n\t\tthis._wss.clients.forEach((ws: WebSocket) => {\n\t\t\tres.push(ws['id_socket']);\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tpublic getWSUserList() {\n\t\tlet res = [];\n\n\t\tthis._wss.clients.forEach((ws: WebSocket) => {\n\t\t\tres.push(ws['id_user']);\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tpublic getHTTPServer() {\n\t\treturn this._server;\n\t}\n\n\tpublic getCronManager() {\n\t\treturn this._cronManager;\n\t}\n\n\tpublic getMethodManager() {\n\t\treturn this._methodManager;\n\t}\n\n\tpublic getSubscriptionManager() {\n\t\treturn this._subscriptionManager;\n\t}\n\n\tpublic getQueueManager() {\n\t\treturn this._queueManager;\n\t}\n\n\tpublic getMonitorManager() {\n\t\treturn this._monitorManager;\n\t}\n\n\tpublic getMongoServer() {\n\t\treturn this._mongoManager;\n\t}\n\n\tprivate createServer(): void {\n\t\t// Start express server\n\t\tthis._server = createServer(this._app);\n\t\tthis._server.keepAliveTimeout = 65000;\n\t\tthis._server.headersTimeout = 66000; // This should be bigger than `keepAliveTimeout + your server's expected response time`\n\n\t\t// Start websocket server\n\t\t// Verify client with token before opening socket\n\t\tthis._wss = new WebSocket.Server({ \n\t\t\tserver: this._server,\n\t\t\tverifyClient: async (info, cb) => {\n\t\t\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\t\t\tconsole.log('Verify Client', info, cb);\n\t\t\t\t}\n\n\t\t\t\tlet infoData = (<string>info.req.headers['sec-websocket-protocol']).split(/,/);\n\n\t\t\t\tif (info.origin !== this._serverConfig['ROOT_URL'] && info.origin !== this._serverConfig['SEC_ROOT_URL'] && info.origin !== this._serverConfig['RESOLVEIO_URL'] && info.origin !== this._serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (infoData[1]) { //app version\n\t\t\t\t\t\tlet token = infoData[0];\n\t\t\t\t\t\tif (!token) {\n\t\t\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tjwt.verify(token, this._serverConfig['JWT_SECRET'], async (err, decoded) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\tcb(false, 401, 'Unauthorized');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tinfo.req['id_user'] = decoded['id_user'];\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tlet user = await Users.findById(decoded['id_user']);\n\t\t\t\t\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\t\t\t\t\tinfo.req['user'] = user.fullname;\n\t\t\t\t\t\t\t\t\t\t\tinfo.req['user_readonly'] = user.readonly || false;\n\t\t\t\t\t\t\t\t\t\t\tinfo.req['doc_user'] = user;\n\t\t\t\t\t\t\t\t\t\t\tcb(true);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tcb(false);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\t\t\t\tcb(false);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcb(false, 401, 'Invalid Version');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Start MongoDB Connection\n\t\tthis.setUpMongo();\n\t}\n\n\tprivate setUpMongo() {\n\t\tthis.setUpPassport();\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('Start Managers');\n\t\t}\n\n\t\t// Start Managers\n\t\tthis._subscriptionManager = new SubscriptionManager(this, this._wss, this._serverConfig);\n\t\tthis._methodManager = new MethodManager(this, this._serverConfig, this._clientDir);\n\t\tthis._cronManager = new CronManager(this);\n\t\tthis._queueManager = new QueueMethodManager(this);\n\n\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\tconsole.log('End Managers');\n\t\t}\n\n\t\tthis.listen();\n\t}\n\n\tprivate setUpPassport(): void {\n\t\tif (Users) {\n\t\t\t// Set up login passort\n\t\t\tthis._app.use(passport.initialize());\n\n\t\t\t// Start user authentication\n\t\t\tpassport.use(new passportlocal.Strategy(Users.authenticateStrategy()));\n\t\t\tpassport.serializeUser(Users.serializeUser());\n\t\t\tpassport.deserializeUser(Users.deserializeUser());\n\t\t}\n\t\telse {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.setUpPassport();\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\n\t// Listen to port for websocket\n\tprivate listen(): void {\n\t\tthis._server.listen(this._port, () => {\n\t\t\tconsole.log('Running server on port %s', this._port);\n\t\t});\n\n\t\t// On websocket connection (already verified)\n\t\tthis._wss.on('connection', (ws, req) => {\n\n\t\t\t// Get user from token\n\t\t\tws['id_user'] = req.id_user;\n\t\t\tws['user'] = req.user;\n\t\t\tws['user_readonly'] = req.user_readonly;\n\t\t\tws['doc_user'] = req.doc_user;\n\t\t\tws['id_socket'] = uuid();\n\t\t\tws['retryCnt'] = 0;\n\n\t\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\t\tconsole.log('Connection from: ' + req.user);\n\t\t\t}\n\t\t\t\n\t\t\t// Use for keeping connection alive (ping/pong)\n\t\t\tws['isAlive'] = true;\n\t\t\tws.on('pong', () => {\n\t\t\t\tws['isAlive'] = true;\n\t\t\t\tws['pongTime'] = new Date();\n\t\t\t\tws['latency'] = moment.duration(moment(ws['pongTime']).diff(ws['pingTime'])).asMilliseconds();\n\t\t\t\tthis._subscriptionManager.loggedInLatency(ws);\n\t\t\t});\n\n\t\t\tws['versionTimer'] = setTimeout(() => {\n\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t}, 10000);\n\n\t\t\t// On data received (message)\n\t\t\tws.on('message', async (message: string) => {\n\t\t\t\tif (this.LOGGER === 'DEBUG') {\n\t\t\t\t\tconsole.log('Message from: ' + ws['user'], message);\n\t\t\t\t}\n\n\t\t\t\tlet parseErrorFound = false;\n\n\t\t\t\tlet socketData = null;\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tsocketData = JSON.parse(message, dateReviver);\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\tconsole.log('Error - JSON.parse', message);\n\t\t\t\t\t\n\t\t\t\t\tthis._methodManager.sendEmail('dev@resolveio.com', 'SERVER - JSON Parse Error - ' + this._serverConfig['CLIENT_NAME'], JSON.stringify([message, e]));\n\n\t\t\t\t\tparseErrorFound = true;\n\t\t\t\t}\n\n\t\t\t\tif (!parseErrorFound) {\n\t\t\t\t\tlet data = deepCopy(socketData);\n\n\t\t\t\t\tif (data[0] === 'ping') {\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tws.send('pong', (error) => {\n\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet messageRoute = data.shift();\n\n\t\t\t\t\tif (this._clientRoutes.some(a => messageRoute.includes(a)) && !ws['doc_user'].roles.groups.some(a => a.views.some(b => messageRoute.includes(b))) && !ws['doc_user'].roles.super_admin) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet messageDate = data.shift();\n\t\t\t\t\tlet messageId = data.shift();\n\t\t\t\t\tlet type = data.shift();\n\n\t\t\t\t\tif (type === 'subscription') {\n\t\t\t\t\t\tlet subType = data.shift();\n\t\t\t\t\t\tlet pub = data.shift();\n\t\t\n\t\t\t\t\t\t// Subscribe\n\t\t\t\t\t\tif (subType === 'sub') {\n\t\t\t\t\t\t\tthis._subscriptionManager.subscribe(messageDate, ws, messageId, pub, ...data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Unsubscribe\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._subscriptionManager.unsubscribe(messageDate, ws, messageId, pub, ...data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._msgQueue.splice(0, 0, {\n\t\t\t\t\t\t\tws: ws,\n\t\t\t\t\t\t\tdata: socketData\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tws.on('close', () => {\n\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t});\n\n\t\t\tws.on('error', error => {\n\t\t\t\tconsole.log(error);\n\t\t\t\t\n\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t});\n\t\t});\n\n\t\t// Keep alive timer to ping/pong\n\t\tsetInterval(() => {\n\t\t\tthis._wss.clients.forEach((ws: WebSocket) => {\n\t\t\t\tif (ws['isAlive'] === false) {\n\t\t\t\t\tws['retryCnt']++;\n\n\t\t\t\t\tif (ws['retryCnt'] >= 60) {\n\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tws['pingTime'] = new Date();\n\t\t\t\t\t\tws.ping(() => {});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tws['retryCnt'] = 0;\n\t\t\t\t\tws['isAlive'] = false;\n\t\t\t\t\tws['pingTime'] = new Date();\n\t\t\t\t\tws.ping(() => {});\n\t\t\t\t}\n\t\t\t});\n\t\t}, 5000);\n\n\t\tsetInterval(async () => {\n\t\t\t// console.log(data);\n\n\t\t\tif (!this._msgQueueRunning) {\n\t\t\t\tthis._msgQueueRunning = true;\n\t\t\t\t\n\t\t\t\tfor (let i = this._msgQueue.length - 1; i >= 0; i--) {\n\t\t\t\t\tlet msg = this._msgQueue.pop();\n\t\t\t\t\tlet data = msg.data;\n\t\t\t\t\tlet ws = msg.ws;\n\t\t\n\t\t\t\t\tlet messageRoute = data.shift();\n\t\t\t\t\tlet messageDate = data.shift();\n\t\t\t\t\tlet messageId = data.shift();\n\t\t\t\t\tlet type = data.shift();\n\t\t\n\t\t\t\t\t// Method call\n\t\t\t\t\tif (type === 'method') {\n\t\t\t\t\t\tlet method = data.shift();\n\t\t\n\t\t\t\t\t\tif (method === 'setWSAppVersion') {\n\t\t\t\t\t\t\tclearTimeout(ws['versionTimer']);\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif (method === 'disconnectWSCommand') {\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t}, 5000);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ws['user_readonly']) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet methodLatencyId = objectIdHexString();\n\n\t\t\t\t\t\tLogMethodLatencies.create({\n\t\t\t\t\t\t\t_id: methodLatencyId,\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\t\t\tdate_end: null,\n\t\t\t\t\t\t\tlatency_ms: 0,\n\t\t\t\t\t\t\tmethod: method\n\t\t\t\t\t\t});\n\t\t\n\t\t\t\t\t\tif (method !== 'reportBuilderGetResults' && method !== 'reportBuilderGetDistinctValue' && method !== 'reportBuilderBuildTree' && method !== 'generatePDF' && method !== 'getWOOfflineData' && method !== 'countQuery' && method !== 'countWithQuery' && method !== 'countCollectionWithQuery' && method !== 'find' && method !== 'findOne' && method !== 'findWithOptions' && method !== 'setWSAppVersion' && method !== 'getDrivers') {\n\t\t\t\t\t\t\tif (getBinarySize(JSON.stringify(data)) < 200000) {\n\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\t\ttype: 'client-request',\n\t\t\t\t\t\t\t\t\ttitle: 'Client Request - Method',\n\t\t\t\t\t\t\t\t\tmessage: 'User: ' + ws['user'] + ', Type: ' + type + ', MessageId: ' + messageId + ', Method: ' + method + ', Route: ' + messageRoute,\n\t\t\t\t\t\t\t\t\tpayload: JSON.stringify(data, null, 2),\n\t\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\t\troute: messageRoute,\n\t\t\t\t\t\t\t\t\tdata_0: data[0] ? JSON.stringify(data[0]) : null,\n\t\t\t\t\t\t\t\t\tdata_1: data[1] ? JSON.stringify(data[1]) : null,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\t\ttype: 'client-request',\n\t\t\t\t\t\t\t\t\ttitle: 'Client Request - Method',\n\t\t\t\t\t\t\t\t\tmessage: 'User: ' + ws['user'] + ', Type: ' + type + ', MessageId: ' + messageId + ', Method: ' + method + ', Route: ' + messageRoute,\n\t\t\t\t\t\t\t\t\tpayload: 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\t\troute: messageRoute,\n\t\t\t\t\t\t\t\t\tdata_0: null,\n\t\t\t\t\t\t\t\t\tdata_1: null\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\tdata: 'ACK'\n\t\t\t\t\t\t};\n\t\t\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tws.send(JSON.stringify(serverRes), (error) => {\n\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif (this._methodManager._methods[method]) {\n\t\t\n\t\t\t\t\t\t\tlet query: any = {$and: [\n\t\t\t\t\t\t\t\t{id_user: ws['id_user']}, \n\t\t\t\t\t\t\t\t{message_id: messageId},\n\t\t\t\t\t\t\t\t{date: messageDate}\n\t\t\t\t\t\t\t]};\n\t\t\n\t\t\t\t\t\t\tif (method !== 'updateDocumentOffline' && method !== 'updateDocumentPropsOffline') {\n\t\t\t\t\t\t\t\tquery.$and.push({method: method});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (method === 'updateDocumentOffline') {\n\t\t\t\t\t\t\t\t\tquery.$and.push({\n\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t{method: method},\n\t\t\t\t\t\t\t\t\t\t\t{method: 'updateDocument'}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (method === 'updateDocumentPropsOffline') {\n\t\t\t\t\t\t\t\t\tquery.$and.push({\n\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t{method: method},\n\t\t\t\t\t\t\t\t\t\t\t{method: 'updateDocumentProps'}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\tlet methodCall = await MethodCalls.findOne(query);\n\t\t\n\t\t\t\t\t\t\tif (!methodCall) {\n\t\t\t\t\t\t\t\tMethodCalls.create({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\t\t\tmessage_id: messageId,\n\t\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\t\tdate: messageDate\n\t\t\t\t\t\t\t\t});\n\t\t\t\n\t\t\t\t\t\t\t\tif (this._methodManager._methods[method]) {\n\t\t\t\t\t\t\t\t\tif (this._methodManager._methods[method].skipQueue) {\n\t\t\t\t\t\t\t\t\t\tthis._methodManager.callMethod(methodLatencyId, ws, messageDate, messageId, method, ...data);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tthis._queueManager.addMethodToQueue(methodLatencyId, ws['id_socket'], ws['id_user'], ws['user'], messageDate, messageId, method, data);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tconsole.log('Could not find method: ' + method);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tMethodResponses.findOne({$and: [\n\t\t\t\t\t\t\t\t\t{id_user: ws['id_user']}, \n\t\t\t\t\t\t\t\t\t{message_id: messageId},\n\t\t\t\t\t\t\t\t\t{method: method},\n\t\t\t\t\t\t\t\t\t{date: messageDate}\n\t\t\t\t\t\t\t\t]}).then(res => {\n\t\t\t\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\t\t\t\t\tws.send(JSON.stringify(res.response), (error) => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}, err => {});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconsole.log('Could not find method: ' + method);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (type === 'methodResponse') {\n\t\t\t\t\t\tlet method = data.shift();\n\t\t\n\t\t\t\t\t\tMethodResponses.findOne({$and: [\n\t\t\t\t\t\t\t{id_user: ws['id_user']}, \n\t\t\t\t\t\t\t{message_id: messageId},\n\t\t\t\t\t\t\t{method: method},\n\t\t\t\t\t\t\t{date: messageDate}\n\t\t\t\t\t\t]}).then(res => {\n\t\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\t\t\tws.send(JSON.stringify(res.response), (error) => {\n\t\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\t\tthis.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, err => {});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._msgQueueRunning = false;\n\t\t\t}\n\t\t}, 25);\n\t}\n\n\tpublic unsubscribeWS(ws: WebSocket) {\n\t\tthis._subscriptionManager.unsubscribeAll(ws);\n\t}\n\n\tpublic getApp() {\n\t\treturn this._app;\n\t}\n}"]}
package/util/common.js CHANGED
@@ -66,7 +66,7 @@ function buildRbLookups(rbLookups, defaultSchema, default_checked_array) {
66
66
  if (!defaultSchema[lkp.local_key]) {
67
67
  errString += '--local_key: \'' + lkp.local_key + '\' MUST be a valid schema path! ';
68
68
  }
69
- else if (defaultSchema[lkp.local_key].instance !== 'String') {
69
+ else if (defaultSchema[lkp.local_key].type !== String) {
70
70
  errString += '--local_key: \'' + lkp.local_key + '\' MUST be a String! ';
71
71
  }
72
72
  var lookupNode = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["let rusDiff = require('rus-diff');\nlet deepDiff = require('deep-diff').diff;\nimport { LookupTables } from '../models/report-builder.model';\nlet clone = require('clone');\n\nexport function buildRbSchema(rbSchema: any) {\n\tObject.keys(rbSchema).forEach(key => {\n\t\tif (rbSchema[key].type === Object) {\n\t\t\trbSchema[key].type = 'Object';\n\t\t\trbSchema[key].rbType = 'Object';\n\t\t}\n\t\telse if (rbSchema[key].type === Array) {\n\t\t\trbSchema[key].type = 'Array';\n\t\t\trbSchema[key].rbType = 'Array';\n\t\t}\n\t\telse if (rbSchema[key].type === String) {\n\t\t\trbSchema[key].type = 'String';\n\t\t\trbSchema[key].rbType = 'String';\n\t\t}\n\t\telse if (rbSchema[key].type === Date) {\n\t\t\trbSchema[key].type = 'Date';\n\t\t\trbSchema[key].rbType = 'Date';\n\t\t}\n\t\telse if (rbSchema[key].type === Number) {\n\t\t\trbSchema[key].type = 'Number';\n\t\t\trbSchema[key].rbType = 'Number';\n\t\t}\n\t\telse if (rbSchema[key].type === Boolean) {\n\t\t\trbSchema[key].rbType = 'Boolean';\n\t\t\trbSchema[key].type = 'Boolean';\n\t\t}\n\t});\n\n\tObject.keys(rbSchema).forEach(key => {\n\t\tdelete rbSchema[key].type;\n\t});\n\n\treturn rbSchema;\n}\n\nexport function buildRbLookups(rbLookups: LookupTables[], defaultSchema: object, default_checked_array: string[] = []) {\n\t// Remember: lkp.local_key will be removed later on, because it has 'id_'\n\t\n\trbLookups.forEach(lkp => {\n\t\tlet errString = '';\n\t\tlet localKey, newPropertyName;\n\t\tlet localKeyDir = '';\n\t\tlet localKeyDirDot = '';\n\t\tlet collectionAlias = toTitleCase(lkp.lookup.replace(/\\_/g, ' ')) + ' (' + toTitleCase(lkp.local_key.replace('id_', '').replace(/\\_/g, ' ').replace(/\\.\\$\\./g, ' -> ').replace(/\\./g, ' -> ')) + ') (Lookup)';\n\n\t\tif (lkp.local_key.match(/\\./)) {\n\t\t\tlocalKey = lkp.local_key.replace(/\\.\\$/g, '');\n\t\t\tlocalKeyDirDot = lkp.local_key.replace(/^(.+\\.).*$/, '$1');\n\t\t\tlocalKeyDir = localKeyDirDot.replace(/\\.$/, '');\n\t\t}\n\t\telse {\n\t\t\t// local_key is a root leaf node.\n\t\t\tlocalKey = lkp.local_key;\n\t\t}\n\t\tnewPropertyName = localKeyDirDot + collectionAlias;\n\t\tif (!defaultSchema[lkp.local_key]) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a valid schema path! ';\n\t\t}\n\t\telse if ((<any>defaultSchema[lkp.local_key]).instance !== 'String') {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a String! ';\n\t\t}\n\t\tlet lookupNode = {\n\t\t\tlookup_collection: lkp.lookup,\n\t\t\tlookup_collection_alias: collectionAlias,\n\t\t\tlocal_key: localKey,\n\t\t\tfield_path: localKeyDir,\n\t\t\tlookup_as: newPropertyName,\n\t\t\tlookup_key: '_id',\n\t\t\ttype: 'Object',\n\t\t};\n\n\t\tdefaultSchema[newPropertyName] = lookupNode;\n\n\t\tif (errString) {\n\t\t\tthrowErr(errString, lkp, lookupNode, newPropertyName);\n\t\t}\n\t});\n\n\tfor (let ii = 0; ii < default_checked_array.length; ii++) {\n\t\tdefaultSchema[default_checked_array[ii]] = {};\n\t\tdefaultSchema[default_checked_array[ii]]['default_checked'] = true;\n\t\tObject.assign(defaultSchema[default_checked_array[ii]], defaultSchema['tree'][default_checked_array[ii]]);\n\t}\n\n\treturn defaultSchema;\n}\n\nexport function throwErr(err: any, lkp, lookupNode, newPropertyName = '') {\n\t// err could be from a try/throw/catch\n\tconsole.log('------- ERROR thrown by rbLookups: ');\n\tconsole.log(err);\n\tconsole.log('---item: ');\n\tconsole.log(lkp);\n\tconsole.log('---Attempted to create rbSchema[\\'' + newPropertyName + '\\']: ');\n\tconsole.log(lookupNode);\n\tprocess.exit(0);\n}\n\nexport function deepCopy(value) {\n\treturn clone(value);\n}\n\n// export function deepCopy(obj) {\n// \treturn JSON.parse(JSON.stringify(obj), dateReviver);\n// }\n\nexport function dateReviver(key, value) {\n\tif (typeof value === 'string') {\n\t\tlet a = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n\t\tif (a) {\n\t\t\treturn new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));\n\t\t}\n\t}\n\treturn value;\n}\n\nexport function getMongoUpdates(currDoc, modifiedDoc, incVersion) {\n\tif (currDoc.createdAt) {\n\t\tmodifiedDoc.createdAt = currDoc.createdAt;\n\t}\n\n\tif (currDoc.updatedAt) {\n\t\tmodifiedDoc.updatedAt = currDoc.updatedAt;\n\t}\n\n\tlet updates = rusDiff.diff(currDoc, modifiedDoc);\n\n\tif (updates) {\n\t\tif (updates.$set && !Object.keys(updates.$set).length) {\n\t\t\tdelete updates.$set;\n\t\t}\n\n\t\tif (incVersion) {\n\t\t\tupdates.$inc = {__v: 1};\n\t\t}\n\t}\n\telse {\n\t\tif (incVersion) {\n\t\t\tupdates = {\n\t\t\t\t$inc: {__v: 1}\n\t\t\t};\n\t\t}\n\t}\n\n\treturn updates;\n}\n\nexport function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {\n\tlet upDoc = deepCopy(oldDoc);\n\tupDoc.__v = currentDoc.__v;\n\tlet diff_1 = getDeepDiff(oldDoc, currentDoc);\n\tlet diff_2 = getDeepDiff(oldDoc, f_doc);\n\tlet updates = mergeUpdates(diff_2, diff_1);\n\tapplyMongoUpdate(upDoc, updates);\n\treturn upDoc;\n}\n\nexport function mergeUpdates(...updatesToMerge) {\n\tlet merged = {\n\t\t$set: {},\n\t\t$unset: {},\n\t\t$inc: {},\n\t\t$push: {},\n\t\t$pull: {}\n\t};\n\n\tupdatesToMerge.filter(a => a).forEach(anUpdate => {\n\t\tanUpdate.forEach(change => {\n\t\t\tlet path = change.path[0];\n\n\t\t\tfor (let i = 1; i < change.path.length; i++) {\n\t\t\t\tpath += '.' + change.path[i];\n\t\t\t}\n\n\t\t\tif (change.kind === 'E') {\n\t\t\t\tif (typeof(change.rhs) === 'number' && path.endsWith('quantity')) {\n\t\t\t\t\tif (merged.$inc[path]) {\n\t\t\t\t\t\tmerged.$inc[path] += change.rhs - change.lhs;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tmerged.$inc[path] = change.rhs - change.lhs;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmerged.$set[path] = change.rhs;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (change.kind === 'A') {\n\t\t\t\tif (change.item.kind === 'N') {\n\t\t\t\t\t\n\t\t\t\t\tif (!merged.$push[path] || JSON.stringify(merged.$push[path]) !== JSON.stringify(change.item.rhs)) {\n\t\t\t\t\t\tif (!merged.$push[path]) {\n\t\t\t\t\t\t\tmerged.$push[path] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!merged.$push[path].filter(a => JSON.stringify(a) === JSON.stringify(change.item.rhs)).length) {\n\t\t\t\t\t\t\tmerged.$push[path].push(change.item.rhs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (change.item.kind === 'D') {\n\t\t\t\t\tif (!merged.$pull[path] || JSON.stringify(merged.$pull[path]) !== JSON.stringify(change.item.lhs)) {\n\t\t\t\t\t\tif (!merged.$pull[path]) {\n\t\t\t\t\t\t\tmerged.$pull[path] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!merged.$pull[path].filter(a => JSON.stringify(a) === JSON.stringify(change.item.lhs)).length) {\n\t\t\t\t\t\t\tmerged.$pull[path].push(change.item.lhs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (change.item.kind === 'E') {\n\t\t\t\t\tconsole.log('Condition E not satisfied.');\n\t\t\t\t\t// if (!merged.$pull[path] || JSON.stringify(merged.$pull[path]) !== JSON.stringify(change.item.lhs)) {\n\t\t\t\t\t// \tmerged.$pull[path] = change.item.lhs;\n\t\t\t\t\t// }\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\treturn merged;\n}\n\nexport function getDeepDiff(doc1, doc2) {\n\tdelete doc1._id;\n\tdelete doc1.__v;\n\n\tif (doc1.updatedAt) {\n\t\tdelete doc1.updatedAt;\n\t}\n\n\tif (doc1.createdAt) {\n\t\tdelete doc1.createdAt;\n\t}\n\n\tdelete doc2._id;\n\tdelete doc2.__v;\n\n\tif (doc2.updatedAt) {\n\t\tdelete doc2.updatedAt;\n\t}\n\n\tif (doc2.createdAt) {\n\t\tdelete doc2.createdAt;\n\t}\n\n\treturn deepDiff(doc1, doc2);\n}\n\nexport function applyMongoUpdate(uDoc, delta) {\n\tlet orig, k, pathk, vk, n, n1, n2, name, o, o1, o2, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9a, ref9b, ref10, ref11, ref12a, ref12b, ref13, v;\n\n\torig = deepCopy(uDoc);\n\n\tif (delta != null) {\n\t\tif (delta.$rename != null) {\n\t\t\tref = delta.$rename;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref) {\n\t\t\t\tv = ref[k];\n\t\t\t\tref1 = resolve(uDoc, k), o1 = ref1[0], n1 = ref1[1];\n\t\t\t\tref2 = resolve(uDoc, v), o2 = ref2[0], n2 = ref2[1];\n\t\t\t\tif ((o1 != null) && n1.length === 1) {\n\t\t\t\t\tif ((o2 != null) && n2.length === 1) {\n\t\t\t\t\t\to2[n2[0]] = o1[n1[0]];\n\t\t\t\t\t\tdelete o1[n1[0]];\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o2 + '/' + n2 + ' - couldn\\'t resolve first for ' + uDoc + ' ' + v);\n\t\t\t\t\t\tconsole.log('Error', o2 + '/' + n2 + ' - couldn\\'t resolve first for ' + uDoc + ' ' + v);\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o1 + '/' + n1 + ' - couldn\\'t resolve second for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o1 + '/' + n1 + ' - couldn\\'t resolve second for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$set != null) {\n\t\t\tref3 = delta.$set;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref3) {\n\t\t\t\tv = ref3[k];\n\t\t\t\tref4 = resolve(uDoc, k, {\n\t\t\t\t\tforce: true\n\t\t\t\t}), o = ref4[0], n = ref4[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\to[n[0]] = v;\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$inc != null) {\n\t\t\tref5 = delta.$inc;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref5) {\n\t\t\t\tv = ref5[k];\n\t\t\t\tref6 = resolve(uDoc, k, {\n\t\t\t\tforce: true\n\t\t\t\t}), o = ref6[0], n = ref6[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\tif (o[name = n[0]] == null) {\n\t\t\t\t\t\to[name] = 0;\n\t\t\t\t\t}\n\t\t\t\t\to[n[0]] += v;\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$unset != null) {\n\t\t\tref7 = delta.$unset;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref7) {\n\t\t\t\tv = ref7[k];\n\t\t\t\tref8 = resolve(uDoc, k), o = ref8[0], n = ref8[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\tdelete o[n[0]];\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$pull != null) {\n\t\t\tref9a = delta.$pull;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (pathk in ref9a) { // should only loop 1 time\n\t\t\t\tref9b = ref9a[pathk];\n\t\t\t\tfor (let kk = (ref9b.length - 1); kk >= 0; kk--) {\n\t\t\t\t\tvk = ref9b[kk];\n\t\t\t\t\t\n\t\t\t\t\tref10 = resolve(uDoc, pathk), o = ref10[0], n = ref10[1];\n\t\t\t\t\tref11 = resolve(orig, pathk), o2 = ref11[0], n2 = ref11[1];\n\t\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\t\to[n[0]].splice((<Array<any>>o2[n2[0]]).findIndex(z => JSON.stringify(z) === JSON.stringify(vk)), 1);\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$push != null) {\n\t\t\tref12a = delta.$push;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (pathk in ref12a) { // should only loop 1 time\n\t\t\t\tref12b = ref12a[pathk];\n\t\t\t\t// for (let kk = 0; kk < ref12b.length; kk++) {\n\t\t\t\tfor (let kk = (ref12b.length - 1); kk >= 0; kk--) {\n\t\t\t\t\t\tvk = ref12b[kk];\n\n\t\t\t\t\tref13 = resolve(uDoc, pathk), o = ref13[0], n = ref13[1];\n\t\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\t\to[n[0]].push(vk);\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn uDoc;\n}\n\nfunction resolve(a, path, options?) {\n\tlet e, k, last, stack;\n\tif (options == null) {\n\t\toptions = {};\n\t}\n\tstack = arrize(path);\n\tlast = [];\n\tif (stack.length > 0) {\n\t\tlast.unshift(stack.pop());\n\t}\n\te = a;\n\tif (e !== null) {\n\t\twhile ((k = stack.shift()) !== void 0) {\n\t\t\tif (e[k] !== void 0) {\n\t\t\te = e[k];\n\t\t\t} else {\n\t\t\tstack.unshift(k);\n\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (options.force) {\n\t\twhile ((k = stack.shift()) !== void 0) {\n\t\t\tif ((typeof stack[0] === 'number') || ((stack.length === 0) && (typeof last[0] === 'number'))) {\n\t\t\te[k] = [];\n\t\t\t} else {\n\t\t\te[k] = {};\n\t\t\t}\n\t\t\te = e[k];\n\t\t}\n\t} \n\telse {\n\t\twhile ((k = stack.pop()) !== void 0) {\n\t\t\tlast.unshift(k);\n\t\t}\n\t}\n\treturn [e, last];\n}\n\nfunction arrize(path, glue?) {\n\tif (glue == null) {\n\t\tglue = '.';\n\t}\n\treturn ((function() {\n\t\tif (Array.isArray(path)) {\n\t\t\treturn path.slice(0);\n\t\t} \n\t\telse {\n\t\t\tswitch (path) {\n\t\t\tcase void 0:\n\t\t\tcase null:\n\t\t\tcase false:\n\t\t\tcase '':\n\t\t\t\treturn [];\n\t\t\tdefault:\n\t\t\t\treturn path.toString().split(glue);\n\t\t\t}\n\t\t}\n\t})()).map(function(e) {\n\t\tswitch (e) {\n\t\t\tcase void 0:\n\t\t\tcase null:\n\t\t\tcase false:\n\t\t\tcase '':\n\t\t\treturn null;\n\t\t\tdefault:\n\t\t\treturn e.toString();\n\t\t}\n\t}).filter(function(e) {\n\t\treturn e != null;\n\t});\n}\n\n\nexport function getBinarySize(string) {\n\tif (string) {\n\t\treturn Buffer.byteLength(string, 'utf8');\n\t}\n\telse {\n\t\treturn 0;\n\t}\n}\n\nexport function pad(num, size) {\n\tlet s = num + '';\n\twhile (s.length < size) { s = '0' + s; }\n\treturn s;\n}\n\nexport function randomString(length, chars) {\n\tlet result = '';\n\tfor (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)]; }\n\treturn result;\n}\n\nexport function toTitleCase(str) {\n\treturn str.replace(/\\w\\S*/g, function(txt){\n\t\treturn txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n\t});\n}\n\nexport function isObject(item) {\n\treturn (item && typeof item === 'object' && !Array.isArray(item));\n}\n\nexport function mergeDeep(target, ...sources) {\n\tif (!sources.length) {\n\t\treturn target;\n\t}\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\tObject.assign(target, { [key]: {} });\n\t\t\t\t}\n\t\t\t\tmergeDeep(target[key], source[key]);\n\t\t\t} \n\t\t\telse {\n\t\t\t\tObject.assign(target, { [key]: source[key] });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn mergeDeep(target, ...sources);\n}"]}
1
+ {"version":3,"sources":["../../src/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["let rusDiff = require('rus-diff');\nlet deepDiff = require('deep-diff').diff;\nimport { LookupTables } from '../models/report-builder.model';\nlet clone = require('clone');\n\nexport function buildRbSchema(rbSchema: any) {\n\tObject.keys(rbSchema).forEach(key => {\n\t\tif (rbSchema[key].type === Object) {\n\t\t\trbSchema[key].type = 'Object';\n\t\t\trbSchema[key].rbType = 'Object';\n\t\t}\n\t\telse if (rbSchema[key].type === Array) {\n\t\t\trbSchema[key].type = 'Array';\n\t\t\trbSchema[key].rbType = 'Array';\n\t\t}\n\t\telse if (rbSchema[key].type === String) {\n\t\t\trbSchema[key].type = 'String';\n\t\t\trbSchema[key].rbType = 'String';\n\t\t}\n\t\telse if (rbSchema[key].type === Date) {\n\t\t\trbSchema[key].type = 'Date';\n\t\t\trbSchema[key].rbType = 'Date';\n\t\t}\n\t\telse if (rbSchema[key].type === Number) {\n\t\t\trbSchema[key].type = 'Number';\n\t\t\trbSchema[key].rbType = 'Number';\n\t\t}\n\t\telse if (rbSchema[key].type === Boolean) {\n\t\t\trbSchema[key].rbType = 'Boolean';\n\t\t\trbSchema[key].type = 'Boolean';\n\t\t}\n\t});\n\n\tObject.keys(rbSchema).forEach(key => {\n\t\tdelete rbSchema[key].type;\n\t});\n\n\treturn rbSchema;\n}\n\nexport function buildRbLookups(rbLookups: LookupTables[], defaultSchema: object, default_checked_array: string[] = []) {\n\t// Remember: lkp.local_key will be removed later on, because it has 'id_'\n\t\n\trbLookups.forEach(lkp => {\n\t\tlet errString = '';\n\t\tlet localKey, newPropertyName;\n\t\tlet localKeyDir = '';\n\t\tlet localKeyDirDot = '';\n\t\tlet collectionAlias = toTitleCase(lkp.lookup.replace(/\\_/g, ' ')) + ' (' + toTitleCase(lkp.local_key.replace('id_', '').replace(/\\_/g, ' ').replace(/\\.\\$\\./g, ' -> ').replace(/\\./g, ' -> ')) + ') (Lookup)';\n\n\t\tif (lkp.local_key.match(/\\./)) {\n\t\t\tlocalKey = lkp.local_key.replace(/\\.\\$/g, '');\n\t\t\tlocalKeyDirDot = lkp.local_key.replace(/^(.+\\.).*$/, '$1');\n\t\t\tlocalKeyDir = localKeyDirDot.replace(/\\.$/, '');\n\t\t}\n\t\telse {\n\t\t\t// local_key is a root leaf node.\n\t\t\tlocalKey = lkp.local_key;\n\t\t}\n\t\tnewPropertyName = localKeyDirDot + collectionAlias;\n\t\t\n\t\tif (!defaultSchema[lkp.local_key]) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a valid schema path! ';\n\t\t}\n\t\telse if (defaultSchema[lkp.local_key].type !== String) {\n\t\t\terrString += '--local_key: \\'' + lkp.local_key + '\\' MUST be a String! ';\n\t\t}\n\t\tlet lookupNode = {\n\t\t\tlookup_collection: lkp.lookup,\n\t\t\tlookup_collection_alias: collectionAlias,\n\t\t\tlocal_key: localKey,\n\t\t\tfield_path: localKeyDir,\n\t\t\tlookup_as: newPropertyName,\n\t\t\tlookup_key: '_id',\n\t\t\ttype: 'Object',\n\t\t};\n\n\t\tdefaultSchema[newPropertyName] = lookupNode;\n\n\t\tif (errString) {\n\t\t\tthrowErr(errString, lkp, lookupNode, newPropertyName);\n\t\t}\n\t});\n\n\tfor (let ii = 0; ii < default_checked_array.length; ii++) {\n\t\tdefaultSchema[default_checked_array[ii]] = {};\n\t\tdefaultSchema[default_checked_array[ii]]['default_checked'] = true;\n\t\tObject.assign(defaultSchema[default_checked_array[ii]], defaultSchema['tree'][default_checked_array[ii]]);\n\t}\n\n\treturn defaultSchema;\n}\n\nexport function throwErr(err: any, lkp, lookupNode, newPropertyName = '') {\n\t// err could be from a try/throw/catch\n\tconsole.log('------- ERROR thrown by rbLookups: ');\n\tconsole.log(err);\n\tconsole.log('---item: ');\n\tconsole.log(lkp);\n\tconsole.log('---Attempted to create rbSchema[\\'' + newPropertyName + '\\']: ');\n\tconsole.log(lookupNode);\n\tprocess.exit(0);\n}\n\nexport function deepCopy(value) {\n\treturn clone(value);\n}\n\n// export function deepCopy(obj) {\n// \treturn JSON.parse(JSON.stringify(obj), dateReviver);\n// }\n\nexport function dateReviver(key, value) {\n\tif (typeof value === 'string') {\n\t\tlet a = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n\t\tif (a) {\n\t\t\treturn new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));\n\t\t}\n\t}\n\treturn value;\n}\n\nexport function getMongoUpdates(currDoc, modifiedDoc, incVersion) {\n\tif (currDoc.createdAt) {\n\t\tmodifiedDoc.createdAt = currDoc.createdAt;\n\t}\n\n\tif (currDoc.updatedAt) {\n\t\tmodifiedDoc.updatedAt = currDoc.updatedAt;\n\t}\n\n\tlet updates = rusDiff.diff(currDoc, modifiedDoc);\n\n\tif (updates) {\n\t\tif (updates.$set && !Object.keys(updates.$set).length) {\n\t\t\tdelete updates.$set;\n\t\t}\n\n\t\tif (incVersion) {\n\t\t\tupdates.$inc = {__v: 1};\n\t\t}\n\t}\n\telse {\n\t\tif (incVersion) {\n\t\t\tupdates = {\n\t\t\t\t$inc: {__v: 1}\n\t\t\t};\n\t\t}\n\t}\n\n\treturn updates;\n}\n\nexport function getMongoMergeUpdatedDoc(f_doc, currentDoc, oldDoc) {\n\tlet upDoc = deepCopy(oldDoc);\n\tupDoc.__v = currentDoc.__v;\n\tlet diff_1 = getDeepDiff(oldDoc, currentDoc);\n\tlet diff_2 = getDeepDiff(oldDoc, f_doc);\n\tlet updates = mergeUpdates(diff_2, diff_1);\n\tapplyMongoUpdate(upDoc, updates);\n\treturn upDoc;\n}\n\nexport function mergeUpdates(...updatesToMerge) {\n\tlet merged = {\n\t\t$set: {},\n\t\t$unset: {},\n\t\t$inc: {},\n\t\t$push: {},\n\t\t$pull: {}\n\t};\n\n\tupdatesToMerge.filter(a => a).forEach(anUpdate => {\n\t\tanUpdate.forEach(change => {\n\t\t\tlet path = change.path[0];\n\n\t\t\tfor (let i = 1; i < change.path.length; i++) {\n\t\t\t\tpath += '.' + change.path[i];\n\t\t\t}\n\n\t\t\tif (change.kind === 'E') {\n\t\t\t\tif (typeof(change.rhs) === 'number' && path.endsWith('quantity')) {\n\t\t\t\t\tif (merged.$inc[path]) {\n\t\t\t\t\t\tmerged.$inc[path] += change.rhs - change.lhs;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tmerged.$inc[path] = change.rhs - change.lhs;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmerged.$set[path] = change.rhs;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (change.kind === 'A') {\n\t\t\t\tif (change.item.kind === 'N') {\n\t\t\t\t\t\n\t\t\t\t\tif (!merged.$push[path] || JSON.stringify(merged.$push[path]) !== JSON.stringify(change.item.rhs)) {\n\t\t\t\t\t\tif (!merged.$push[path]) {\n\t\t\t\t\t\t\tmerged.$push[path] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!merged.$push[path].filter(a => JSON.stringify(a) === JSON.stringify(change.item.rhs)).length) {\n\t\t\t\t\t\t\tmerged.$push[path].push(change.item.rhs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (change.item.kind === 'D') {\n\t\t\t\t\tif (!merged.$pull[path] || JSON.stringify(merged.$pull[path]) !== JSON.stringify(change.item.lhs)) {\n\t\t\t\t\t\tif (!merged.$pull[path]) {\n\t\t\t\t\t\t\tmerged.$pull[path] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!merged.$pull[path].filter(a => JSON.stringify(a) === JSON.stringify(change.item.lhs)).length) {\n\t\t\t\t\t\t\tmerged.$pull[path].push(change.item.lhs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (change.item.kind === 'E') {\n\t\t\t\t\tconsole.log('Condition E not satisfied.');\n\t\t\t\t\t// if (!merged.$pull[path] || JSON.stringify(merged.$pull[path]) !== JSON.stringify(change.item.lhs)) {\n\t\t\t\t\t// \tmerged.$pull[path] = change.item.lhs;\n\t\t\t\t\t// }\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\treturn merged;\n}\n\nexport function getDeepDiff(doc1, doc2) {\n\tdelete doc1._id;\n\tdelete doc1.__v;\n\n\tif (doc1.updatedAt) {\n\t\tdelete doc1.updatedAt;\n\t}\n\n\tif (doc1.createdAt) {\n\t\tdelete doc1.createdAt;\n\t}\n\n\tdelete doc2._id;\n\tdelete doc2.__v;\n\n\tif (doc2.updatedAt) {\n\t\tdelete doc2.updatedAt;\n\t}\n\n\tif (doc2.createdAt) {\n\t\tdelete doc2.createdAt;\n\t}\n\n\treturn deepDiff(doc1, doc2);\n}\n\nexport function applyMongoUpdate(uDoc, delta) {\n\tlet orig, k, pathk, vk, n, n1, n2, name, o, o1, o2, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9a, ref9b, ref10, ref11, ref12a, ref12b, ref13, v;\n\n\torig = deepCopy(uDoc);\n\n\tif (delta != null) {\n\t\tif (delta.$rename != null) {\n\t\t\tref = delta.$rename;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref) {\n\t\t\t\tv = ref[k];\n\t\t\t\tref1 = resolve(uDoc, k), o1 = ref1[0], n1 = ref1[1];\n\t\t\t\tref2 = resolve(uDoc, v), o2 = ref2[0], n2 = ref2[1];\n\t\t\t\tif ((o1 != null) && n1.length === 1) {\n\t\t\t\t\tif ((o2 != null) && n2.length === 1) {\n\t\t\t\t\t\to2[n2[0]] = o1[n1[0]];\n\t\t\t\t\t\tdelete o1[n1[0]];\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o2 + '/' + n2 + ' - couldn\\'t resolve first for ' + uDoc + ' ' + v);\n\t\t\t\t\t\tconsole.log('Error', o2 + '/' + n2 + ' - couldn\\'t resolve first for ' + uDoc + ' ' + v);\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o1 + '/' + n1 + ' - couldn\\'t resolve second for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o1 + '/' + n1 + ' - couldn\\'t resolve second for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$set != null) {\n\t\t\tref3 = delta.$set;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref3) {\n\t\t\t\tv = ref3[k];\n\t\t\t\tref4 = resolve(uDoc, k, {\n\t\t\t\t\tforce: true\n\t\t\t\t}), o = ref4[0], n = ref4[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\to[n[0]] = v;\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$inc != null) {\n\t\t\tref5 = delta.$inc;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref5) {\n\t\t\t\tv = ref5[k];\n\t\t\t\tref6 = resolve(uDoc, k, {\n\t\t\t\tforce: true\n\t\t\t\t}), o = ref6[0], n = ref6[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\tif (o[name = n[0]] == null) {\n\t\t\t\t\t\to[name] = 0;\n\t\t\t\t\t}\n\t\t\t\t\to[n[0]] += v;\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t set for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$unset != null) {\n\t\t\tref7 = delta.$unset;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (k in ref7) {\n\t\t\t\tv = ref7[k];\n\t\t\t\tref8 = resolve(uDoc, k), o = ref8[0], n = ref8[1];\n\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\tdelete o[n[0]];\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + k);\n\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + k);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$pull != null) {\n\t\t\tref9a = delta.$pull;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (pathk in ref9a) { // should only loop 1 time\n\t\t\t\tref9b = ref9a[pathk];\n\t\t\t\tfor (let kk = (ref9b.length - 1); kk >= 0; kk--) {\n\t\t\t\t\tvk = ref9b[kk];\n\t\t\t\t\t\n\t\t\t\t\tref10 = resolve(uDoc, pathk), o = ref10[0], n = ref10[1];\n\t\t\t\t\tref11 = resolve(orig, pathk), o2 = ref11[0], n2 = ref11[1];\n\t\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\t\to[n[0]].splice((<Array<any>>o2[n2[0]]).findIndex(z => JSON.stringify(z) === JSON.stringify(vk)), 1);\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (delta.$push != null) {\n\t\t\tref12a = delta.$push;\n\t\t\t// tslint:disable-next-line:forin\n\t\t\tfor (pathk in ref12a) { // should only loop 1 time\n\t\t\t\tref12b = ref12a[pathk];\n\t\t\t\t// for (let kk = 0; kk < ref12b.length; kk++) {\n\t\t\t\tfor (let kk = (ref12b.length - 1); kk >= 0; kk--) {\n\t\t\t\t\t\tvk = ref12b[kk];\n\n\t\t\t\t\tref13 = resolve(uDoc, pathk), o = ref13[0], n = ref13[1];\n\t\t\t\t\tif ((o != null) && n.length === 1) {\n\t\t\t\t\t\to[n[0]].push(vk);\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\t// throw new Error(o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t\tconsole.log('Error', o + '/' + n + ' - couldn\\'t unset for ' + uDoc + ' ' + pathk);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn uDoc;\n}\n\nfunction resolve(a, path, options?) {\n\tlet e, k, last, stack;\n\tif (options == null) {\n\t\toptions = {};\n\t}\n\tstack = arrize(path);\n\tlast = [];\n\tif (stack.length > 0) {\n\t\tlast.unshift(stack.pop());\n\t}\n\te = a;\n\tif (e !== null) {\n\t\twhile ((k = stack.shift()) !== void 0) {\n\t\t\tif (e[k] !== void 0) {\n\t\t\te = e[k];\n\t\t\t} else {\n\t\t\tstack.unshift(k);\n\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (options.force) {\n\t\twhile ((k = stack.shift()) !== void 0) {\n\t\t\tif ((typeof stack[0] === 'number') || ((stack.length === 0) && (typeof last[0] === 'number'))) {\n\t\t\te[k] = [];\n\t\t\t} else {\n\t\t\te[k] = {};\n\t\t\t}\n\t\t\te = e[k];\n\t\t}\n\t} \n\telse {\n\t\twhile ((k = stack.pop()) !== void 0) {\n\t\t\tlast.unshift(k);\n\t\t}\n\t}\n\treturn [e, last];\n}\n\nfunction arrize(path, glue?) {\n\tif (glue == null) {\n\t\tglue = '.';\n\t}\n\treturn ((function() {\n\t\tif (Array.isArray(path)) {\n\t\t\treturn path.slice(0);\n\t\t} \n\t\telse {\n\t\t\tswitch (path) {\n\t\t\tcase void 0:\n\t\t\tcase null:\n\t\t\tcase false:\n\t\t\tcase '':\n\t\t\t\treturn [];\n\t\t\tdefault:\n\t\t\t\treturn path.toString().split(glue);\n\t\t\t}\n\t\t}\n\t})()).map(function(e) {\n\t\tswitch (e) {\n\t\t\tcase void 0:\n\t\t\tcase null:\n\t\t\tcase false:\n\t\t\tcase '':\n\t\t\treturn null;\n\t\t\tdefault:\n\t\t\treturn e.toString();\n\t\t}\n\t}).filter(function(e) {\n\t\treturn e != null;\n\t});\n}\n\n\nexport function getBinarySize(string) {\n\tif (string) {\n\t\treturn Buffer.byteLength(string, 'utf8');\n\t}\n\telse {\n\t\treturn 0;\n\t}\n}\n\nexport function pad(num, size) {\n\tlet s = num + '';\n\twhile (s.length < size) { s = '0' + s; }\n\treturn s;\n}\n\nexport function randomString(length, chars) {\n\tlet result = '';\n\tfor (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)]; }\n\treturn result;\n}\n\nexport function toTitleCase(str) {\n\treturn str.replace(/\\w\\S*/g, function(txt){\n\t\treturn txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n\t});\n}\n\nexport function isObject(item) {\n\treturn (item && typeof item === 'object' && !Array.isArray(item));\n}\n\nexport function mergeDeep(target, ...sources) {\n\tif (!sources.length) {\n\t\treturn target;\n\t}\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\tObject.assign(target, { [key]: {} });\n\t\t\t\t}\n\t\t\t\tmergeDeep(target[key], source[key]);\n\t\t\t} \n\t\t\telse {\n\t\t\t\tObject.assign(target, { [key]: source[key] });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn mergeDeep(target, ...sources);\n}"]}