@resolveio/server-lib 20.12.44 → 20.12.46
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/fixtures/init.js +1 -8
- package/fixtures/init.js.map +1 -1
- package/managers/method.manager.d.ts +4 -0
- package/managers/method.manager.js +88 -28
- package/managers/method.manager.js.map +1 -1
- package/managers/worker-dispatcher.manager.d.ts +3 -2
- package/managers/worker-dispatcher.manager.js +35 -15
- package/managers/worker-dispatcher.manager.js.map +1 -1
- package/methods/pdf.js +54 -89
- package/methods/pdf.js.map +1 -1
- package/models/method.model.d.ts +1 -0
- package/models/method.model.js.map +1 -1
- package/package.json +1 -1
- package/util/chrome-cleaner.d.ts +0 -5
- package/util/chrome-cleaner.js +0 -139
- package/util/chrome-cleaner.js.map +0 -1
package/fixtures/init.js
CHANGED
|
@@ -52,7 +52,6 @@ var email_history_collection_1 = require("../collections/email-history.collectio
|
|
|
52
52
|
var flag_collection_1 = require("../collections/flag.collection");
|
|
53
53
|
var report_builder_report_collection_1 = require("../collections/report-builder-report.collection");
|
|
54
54
|
var resolveio_server_app_1 = require("../resolveio-server-app");
|
|
55
|
-
var chrome_cleaner_1 = require("../util/chrome-cleaner");
|
|
56
55
|
function loadServerInit() {
|
|
57
56
|
return __awaiter(this, void 0, void 0, function () {
|
|
58
57
|
var enableDebugFlag, enableDebugFlagPDF;
|
|
@@ -83,14 +82,8 @@ function loadServerInit() {
|
|
|
83
82
|
case 8:
|
|
84
83
|
_a.sent();
|
|
85
84
|
_a.label = 9;
|
|
86
|
-
case 9:
|
|
87
|
-
if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200')) return [3 /*break*/, 11];
|
|
88
|
-
return [4 /*yield*/, (0, chrome_cleaner_1.cleanupExistingChromeProcesses)('server-init')];
|
|
85
|
+
case 9: return [4 /*yield*/, backfillReportBuilderLayouts()];
|
|
89
86
|
case 10:
|
|
90
|
-
_a.sent();
|
|
91
|
-
_a.label = 11;
|
|
92
|
-
case 11: return [4 /*yield*/, backfillReportBuilderLayouts()];
|
|
93
|
-
case 12:
|
|
94
87
|
_a.sent();
|
|
95
88
|
return [2 /*return*/];
|
|
96
89
|
}
|
package/fixtures/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/fixtures/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/fixtures/init.ts"],"names":[],"mappings":"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","file":"init.js","sourcesContent":["import { EmailHistories } from '../collections/email-history.collection';\nimport { Flags } from '../collections/flag.collection';\nimport { ReportBuilderReports } from '../collections/report-builder-report.collection';\nimport { ResolveIOServer } from '../resolveio-server-app';\n\nexport async function loadServerInit() {\n\tawait EmailHistories.updateMany({status: 'processing'}, {$set: {status: 'pending'}});\n\n\tlet enableDebugFlag = await Flags.findOne({type: 'Enable Debug'});\n\n\tif (!enableDebugFlag) {\n\t\tawait Flags.insertOne({type: 'Enable Debug', value: false});\n\t}\n\n\tlet enableDebugFlagPDF = await Flags.findOne({type: 'Enable Debug PDF'});\n\n\tif (!enableDebugFlagPDF) {\n\t\tawait Flags.insertOne({type: 'Enable Debug PDF', value: false});\n\t}\n\telse if (enableDebugFlagPDF.value && ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200') {\n\t\tawait Flags.updateOne({_id: enableDebugFlagPDF._id}, {$set: {value: false}});\n\t}\n\n\tawait backfillReportBuilderLayouts();\n}\n\nasync function backfillReportBuilderLayouts() {\n\tif (!ReportBuilderReports) {\n\t\treturn;\n\t}\n\n\tconst reports = await ReportBuilderReports.find({\n\t\t$or: [\n\t\t\t{fields_layout: {$exists: false}},\n\t\t\t{fields_layout: {$size: 0}}\n\t\t]\n\t});\n\n\tconst ops = [];\n\n\tfor (const report of reports) {\n\t\tconst fieldsSelected = report.fields_selected || [];\n\t\tconst collectionKeys = buildCollectionKeys(report);\n\n\t\tconst layout = fieldsSelected.map((field, index) => {\n\t\t\tconst header = field.columnName || field.fieldName || `Column ${index + 1}`;\n\n\t\t\tconst mappings = collectionKeys.map(key => {\n\t\t\t\tconst matchesKey = key === report.collection_root\n\t\t\t\t\t? (field.collection_name === report.collection_root)\n\t\t\t\t\t: (key === (field.lookup_as || '').trim()) || key === field.collection_name;\n\n\t\t\t\tif (matchesKey) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcollection: key,\n\t\t\t\t\t\tmode: 'variable',\n\t\t\t\t\t\tfieldPath: field.fieldPath || '',\n\t\t\t\t\t\tfieldId: field.id || `f_layout_${index}`,\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\tleafValueType: field.leafValueType || 'Value',\n\t\t\t\t\t\tleafFormatType: field.leafFormatType || ''\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tcollection: key,\n\t\t\t\t\tmode: 'text',\n\t\t\t\t\tfieldPath: '',\n\t\t\t\t\tfieldId: '',\n\t\t\t\t\ttext: '',\n\t\t\t\t\tleafValueType: 'Value',\n\t\t\t\t\tleafFormatType: ''\n\t\t\t\t};\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tid: field.id ? `layout_${field.id}` : `layout_${index}`,\n\t\t\t\theader,\n\t\t\t\tmappings\n\t\t\t};\n\t\t});\n\n\t\tops.push({\n\t\t\tupdateOne: {\n\t\t\t\tfilter: {_id: report._id},\n\t\t\t\tupdate: {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tcollection_joins: report.collection_joins || [],\n\t\t\t\t\t\tfields_layout: layout\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tconsole.log(`Backfilled ${ops.length} report layouts`);\n\n\tif (ops.length) {\n\t\tawait ReportBuilderReports.bulkWrite(ops, {ordered: false}, false, true, true, true);\n\t}\n}\n\nfunction buildCollectionKeys(report: any): string[] {\n\tconst keys: string[] = [];\n\n\tif (report.collection_root) {\n\t\tkeys.push(report.collection_root);\n\t}\n\n\t(report.collection_joins || []).forEach(join => {\n\t\tif (!join) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst alias = (join.alias || '').trim();\n\t\tif (alias && !keys.includes(alias)) {\n\t\t\tkeys.push(alias);\n\t\t}\n\t\telse if (join.collection && !keys.includes(join.collection)) {\n\t\t\tkeys.push(join.collection);\n\t\t}\n\t});\n\n\treturn keys.length ? keys : ['root'];\n}\n"]}
|
|
@@ -33,6 +33,8 @@ export declare class MethodManager {
|
|
|
33
33
|
private _debugCallMethodCronJobHits;
|
|
34
34
|
private _debugSendQueueHits;
|
|
35
35
|
private _enableDebug;
|
|
36
|
+
private _localActiveCounts;
|
|
37
|
+
private _localWaitQueues;
|
|
36
38
|
clientDir: string;
|
|
37
39
|
serverConfig: Record<string, any>;
|
|
38
40
|
constructor();
|
|
@@ -44,6 +46,8 @@ export declare class MethodManager {
|
|
|
44
46
|
callMethodCron(method: string, ...methodData: any[]): Promise<any>;
|
|
45
47
|
callMethod(methodName: string, ...methodData: any[]): Promise<any>;
|
|
46
48
|
private callMethodInternal;
|
|
49
|
+
private acquireLocalConcurrency;
|
|
50
|
+
private createLocalRelease;
|
|
47
51
|
setupEmailWatcher(): void;
|
|
48
52
|
loadPendingEmails(): Promise<void>;
|
|
49
53
|
tryProcessEmail(): Promise<void>;
|
|
@@ -216,6 +216,8 @@ var MethodManager = /** @class */ (function () {
|
|
|
216
216
|
this._debugCallMethodCronJobHits = 0;
|
|
217
217
|
this._debugSendQueueHits = 0;
|
|
218
218
|
this._enableDebug = false;
|
|
219
|
+
this._localActiveCounts = new Map();
|
|
220
|
+
this._localWaitQueues = new Map();
|
|
219
221
|
this.clientDir = '';
|
|
220
222
|
this.serverConfig = {};
|
|
221
223
|
}
|
|
@@ -508,7 +510,7 @@ var MethodManager = /** @class */ (function () {
|
|
|
508
510
|
};
|
|
509
511
|
MethodManager.prototype.callMethodInternal = function (correlationId, methodName, methodData) {
|
|
510
512
|
return __awaiter(this, void 0, void 0, function () {
|
|
511
|
-
var method,
|
|
513
|
+
var method, releaseLocalConcurrency, methodCallback_1, functionMethodData_1, session, shouldStartTransaction, executeWithExistingSession_1, monitor_2;
|
|
512
514
|
var _this = this;
|
|
513
515
|
return __generator(this, function (_a) {
|
|
514
516
|
switch (_a.label) {
|
|
@@ -518,6 +520,12 @@ var MethodManager = /** @class */ (function () {
|
|
|
518
520
|
console.log('No Method: ' + methodName);
|
|
519
521
|
throw new Error("No Method: ".concat(methodName));
|
|
520
522
|
}
|
|
523
|
+
return [4 /*yield*/, this.acquireLocalConcurrency(methodName, method.maxConcurrency)];
|
|
524
|
+
case 1:
|
|
525
|
+
releaseLocalConcurrency = _a.sent();
|
|
526
|
+
_a.label = 2;
|
|
527
|
+
case 2:
|
|
528
|
+
_a.trys.push([2, , 7, 8]);
|
|
521
529
|
if ((methodData.length > 1 || (methodData[0] && typeof methodData[0] !== 'function')) && !method.skipValidation) {
|
|
522
530
|
if (!method.check) {
|
|
523
531
|
console.error(new Date(), 'No Check Function For Method ' + methodName);
|
|
@@ -536,9 +544,9 @@ var MethodManager = /** @class */ (function () {
|
|
|
536
544
|
methodName !== 'countCollectionWithQuery' &&
|
|
537
545
|
methodName !== 'countWithQuery' &&
|
|
538
546
|
methodName !== 'qbFetchRequests' &&
|
|
539
|
-
methodName !== 'qbHandleResponse')) return [3 /*break*/,
|
|
547
|
+
methodName !== 'qbHandleResponse')) return [3 /*break*/, 6];
|
|
540
548
|
if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'
|
|
541
|
-
&& resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200')) return [3 /*break*/,
|
|
549
|
+
&& resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200')) return [3 /*break*/, 3];
|
|
542
550
|
resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({
|
|
543
551
|
type: 'log',
|
|
544
552
|
data: {
|
|
@@ -557,8 +565,8 @@ var MethodManager = /** @class */ (function () {
|
|
|
557
565
|
correlationId: correlationId
|
|
558
566
|
}
|
|
559
567
|
});
|
|
560
|
-
return [3 /*break*/,
|
|
561
|
-
case
|
|
568
|
+
return [3 /*break*/, 5];
|
|
569
|
+
case 3: return [4 /*yield*/, log_collection_1.Logs.insertOne({
|
|
562
570
|
_id: (0, common_1.objectIdHexString)(),
|
|
563
571
|
type: 'callMethod',
|
|
564
572
|
collection: '',
|
|
@@ -574,15 +582,15 @@ var MethodManager = /** @class */ (function () {
|
|
|
574
582
|
instance_index: process.env.NODE_APP_INSTANCE || '0',
|
|
575
583
|
correlationId: correlationId
|
|
576
584
|
})];
|
|
577
|
-
case
|
|
585
|
+
case 4:
|
|
578
586
|
_a.sent();
|
|
579
|
-
_a.label =
|
|
580
|
-
case
|
|
587
|
+
_a.label = 5;
|
|
588
|
+
case 5:
|
|
581
589
|
;
|
|
582
|
-
_a.label =
|
|
583
|
-
case
|
|
584
|
-
|
|
585
|
-
|
|
590
|
+
_a.label = 6;
|
|
591
|
+
case 6:
|
|
592
|
+
methodCallback_1 = typeof (methodData[methodData.length - 1]) === 'function' ? methodData[methodData.length - 1] : null;
|
|
593
|
+
functionMethodData_1 = methodCallback_1 ? methodData.slice(0, -1) : methodData;
|
|
586
594
|
session = resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession();
|
|
587
595
|
shouldStartTransaction = !method.bypassSession &&
|
|
588
596
|
!session &&
|
|
@@ -593,21 +601,21 @@ var MethodManager = /** @class */ (function () {
|
|
|
593
601
|
].includes(methodName) &&
|
|
594
602
|
!methodName.startsWith('monitor-') &&
|
|
595
603
|
!methodName.startsWith('log');
|
|
596
|
-
|
|
604
|
+
executeWithExistingSession_1 = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
597
605
|
var monitor, res, err_3, _a, normalizedError, resolvedCorrelationId;
|
|
598
606
|
var _b;
|
|
599
607
|
return __generator(this, function (_c) {
|
|
600
608
|
switch (_c.label) {
|
|
601
609
|
case 0:
|
|
602
|
-
monitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '',
|
|
610
|
+
monitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData_1);
|
|
603
611
|
_c.label = 1;
|
|
604
612
|
case 1:
|
|
605
613
|
_c.trys.push([1, 3, 7, 9]);
|
|
606
|
-
return [4 /*yield*/, (_b = method.function).call.apply(_b, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(
|
|
614
|
+
return [4 /*yield*/, (_b = method.function).call.apply(_b, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(functionMethodData_1), false))];
|
|
607
615
|
case 2:
|
|
608
616
|
res = _c.sent();
|
|
609
|
-
if (
|
|
610
|
-
|
|
617
|
+
if (methodCallback_1) {
|
|
618
|
+
methodCallback_1(null, res);
|
|
611
619
|
}
|
|
612
620
|
return [2 /*return*/, res];
|
|
613
621
|
case 3:
|
|
@@ -632,8 +640,8 @@ var MethodManager = /** @class */ (function () {
|
|
|
632
640
|
case 4:
|
|
633
641
|
_c.sent();
|
|
634
642
|
normalizedError.message = "".concat(new Date().toISOString(), " - Error in Method (").concat(methodName, ") - Existing Session: ").concat(normalizedError.message);
|
|
635
|
-
if (
|
|
636
|
-
|
|
643
|
+
if (methodCallback_1) {
|
|
644
|
+
methodCallback_1(normalizedError, null);
|
|
637
645
|
}
|
|
638
646
|
if (!!process.env.IS_WORKER_INSTANCE) return [3 /*break*/, 6];
|
|
639
647
|
return [4 /*yield*/, this.callMethod('insertErrorLog', "Error in Method: ".concat(methodName), {
|
|
@@ -668,15 +676,15 @@ var MethodManager = /** @class */ (function () {
|
|
|
668
676
|
switch (_c.label) {
|
|
669
677
|
case 0:
|
|
670
678
|
// console.log(new Date(), 'Calling Method - New Session', methodName);
|
|
671
|
-
monitor_2 = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '',
|
|
679
|
+
monitor_2 = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData_1);
|
|
672
680
|
_c.label = 1;
|
|
673
681
|
case 1:
|
|
674
682
|
_c.trys.push([1, 3, 7, 9]);
|
|
675
|
-
return [4 /*yield*/, (_b = method.function).call.apply(_b, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(
|
|
683
|
+
return [4 /*yield*/, (_b = method.function).call.apply(_b, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(functionMethodData_1), false))];
|
|
676
684
|
case 2:
|
|
677
685
|
res = _c.sent();
|
|
678
|
-
if (
|
|
679
|
-
|
|
686
|
+
if (methodCallback_1) {
|
|
687
|
+
methodCallback_1(null, res);
|
|
680
688
|
}
|
|
681
689
|
return [2 /*return*/, res];
|
|
682
690
|
case 3:
|
|
@@ -701,8 +709,8 @@ var MethodManager = /** @class */ (function () {
|
|
|
701
709
|
case 4:
|
|
702
710
|
_c.sent();
|
|
703
711
|
normalizedError.message = "".concat(new Date().toISOString(), " - Error in Method With Session (").concat(methodName, ") - New Session: ").concat(normalizedError.message);
|
|
704
|
-
if (
|
|
705
|
-
|
|
712
|
+
if (methodCallback_1) {
|
|
713
|
+
methodCallback_1(normalizedError, null);
|
|
706
714
|
}
|
|
707
715
|
if (!!process.env.IS_WORKER_INSTANCE) return [3 /*break*/, 6];
|
|
708
716
|
return [4 /*yield*/, this.callMethod('insertErrorLog', "Error in Method: ".concat(methodName), {
|
|
@@ -732,19 +740,71 @@ var MethodManager = /** @class */ (function () {
|
|
|
732
740
|
else if (method.bypassSession && session) {
|
|
733
741
|
return [2 /*return*/, resolveio_server_app_1.ResolveIOServer.getMongoManager().runWithoutSession(function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
734
742
|
switch (_a.label) {
|
|
735
|
-
case 0: return [4 /*yield*/,
|
|
743
|
+
case 0: return [4 /*yield*/, executeWithExistingSession_1()];
|
|
736
744
|
case 1: return [2 /*return*/, _a.sent()];
|
|
737
745
|
}
|
|
738
746
|
}); }); })];
|
|
739
747
|
}
|
|
740
748
|
else {
|
|
741
|
-
return [2 /*return*/,
|
|
749
|
+
return [2 /*return*/, executeWithExistingSession_1()];
|
|
742
750
|
}
|
|
743
|
-
return [
|
|
751
|
+
return [3 /*break*/, 8];
|
|
752
|
+
case 7:
|
|
753
|
+
releaseLocalConcurrency();
|
|
754
|
+
return [7 /*endfinally*/];
|
|
755
|
+
case 8: return [2 /*return*/];
|
|
744
756
|
}
|
|
745
757
|
});
|
|
746
758
|
});
|
|
747
759
|
};
|
|
760
|
+
MethodManager.prototype.acquireLocalConcurrency = function (methodName, maxConcurrency) {
|
|
761
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
762
|
+
var current;
|
|
763
|
+
var _this = this;
|
|
764
|
+
return __generator(this, function (_a) {
|
|
765
|
+
if (!maxConcurrency || maxConcurrency < 1) {
|
|
766
|
+
return [2 /*return*/, function () { }];
|
|
767
|
+
}
|
|
768
|
+
current = this._localActiveCounts.get(methodName) || 0;
|
|
769
|
+
if (current < maxConcurrency) {
|
|
770
|
+
this._localActiveCounts.set(methodName, current + 1);
|
|
771
|
+
return [2 /*return*/, this.createLocalRelease(methodName)];
|
|
772
|
+
}
|
|
773
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
774
|
+
return [2 /*return*/, new Promise(function (resolve) {
|
|
775
|
+
var queue = _this._localWaitQueues.get(methodName);
|
|
776
|
+
if (!queue) {
|
|
777
|
+
queue = [];
|
|
778
|
+
_this._localWaitQueues.set(methodName, queue);
|
|
779
|
+
}
|
|
780
|
+
queue.push(function () {
|
|
781
|
+
var curr = _this._localActiveCounts.get(methodName) || 0;
|
|
782
|
+
_this._localActiveCounts.set(methodName, curr + 1);
|
|
783
|
+
resolve(_this.createLocalRelease(methodName));
|
|
784
|
+
});
|
|
785
|
+
})];
|
|
786
|
+
});
|
|
787
|
+
});
|
|
788
|
+
};
|
|
789
|
+
MethodManager.prototype.createLocalRelease = function (methodName) {
|
|
790
|
+
var _this = this;
|
|
791
|
+
var released = false;
|
|
792
|
+
return function () {
|
|
793
|
+
if (released) {
|
|
794
|
+
return;
|
|
795
|
+
}
|
|
796
|
+
released = true;
|
|
797
|
+
var current = _this._localActiveCounts.get(methodName) || 0;
|
|
798
|
+
_this._localActiveCounts.set(methodName, current > 0 ? current - 1 : 0);
|
|
799
|
+
var queue = _this._localWaitQueues.get(methodName);
|
|
800
|
+
if (queue && queue.length) {
|
|
801
|
+
var next = queue.shift();
|
|
802
|
+
if (next) {
|
|
803
|
+
next();
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
};
|
|
807
|
+
};
|
|
748
808
|
MethodManager.prototype.setupEmailWatcher = function () {
|
|
749
809
|
var _this = this;
|
|
750
810
|
var changeStream = email_history_collection_1.EmailHistories.watchCollection([]);
|