@resolveio/server-lib 3.2.11 → 3.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/collections/active-subscription.collection.d.ts +7 -0
  2. package/collections/active-subscription.collection.js +68 -0
  3. package/collections/app-status.collection.d.ts +7 -0
  4. package/collections/app-status.collection.js +43 -0
  5. package/collections/app-version.collection.d.ts +7 -0
  6. package/collections/app-version.collection.js +56 -0
  7. package/collections/billing-logged-in-users.collection.d.ts +7 -0
  8. package/collections/billing-logged-in-users.collection.js +73 -0
  9. package/collections/counter.collection.d.ts +9 -0
  10. package/collections/counter.collection.js +73 -0
  11. package/collections/cron-job-history.collection.d.ts +7 -0
  12. package/collections/cron-job-history.collection.js +86 -0
  13. package/collections/cron-job.collection.d.ts +7 -0
  14. package/collections/cron-job.collection.js +89 -0
  15. package/collections/file.collection.d.ts +9 -0
  16. package/collections/file.collection.js +73 -0
  17. package/collections/flag.collection.d.ts +7 -0
  18. package/collections/flag.collection.js +47 -0
  19. package/collections/log.collection.d.ts +7 -0
  20. package/collections/log.collection.js +65 -0
  21. package/collections/logged-in-users.collection.d.ts +7 -0
  22. package/collections/logged-in-users.collection.js +70 -0
  23. package/collections/method-call.collection.d.ts +6 -0
  24. package/collections/method-call.collection.js +44 -0
  25. package/collections/method-response.collection.d.ts +6 -0
  26. package/collections/method-response.collection.js +48 -0
  27. package/collections/notification.collection.d.ts +7 -0
  28. package/collections/notification.collection.js +43 -0
  29. package/collections/queue-flag.collection.d.ts +7 -0
  30. package/collections/queue-flag.collection.js +41 -0
  31. package/collections/queue-method.collection.d.ts +7 -0
  32. package/collections/queue-method.collection.js +119 -0
  33. package/collections/queue-response.collection.d.ts +7 -0
  34. package/collections/queue-response.collection.js +74 -0
  35. package/collections/support-ticket.collection.d.ts +7 -0
  36. package/collections/support-ticket.collection.js +200 -0
  37. package/collections/user.collection.d.ts +9 -0
  38. package/collections/user.collection.js +153 -0
  39. package/cron/cron.d.ts +5 -0
  40. package/cron/cron.js +160 -0
  41. package/fixtures/cron-jobs.d.ts +1 -0
  42. package/fixtures/cron-jobs.js +90 -0
  43. package/fixtures/init.d.ts +1 -0
  44. package/fixtures/init.js +67 -0
  45. package/http/auth.d.ts +2 -0
  46. package/http/auth.js +468 -0
  47. package/http/health.d.ts +1 -0
  48. package/http/health.js +8 -0
  49. package/index.d.ts +16 -0
  50. package/index.js +125 -0
  51. package/managers/cron.manager.d.ts +16 -0
  52. package/managers/cron.manager.js +202 -0
  53. package/managers/database.manager.d.ts +6 -0
  54. package/managers/database.manager.js +12 -0
  55. package/managers/method.manager.d.ts +28 -0
  56. package/managers/method.manager.js +584 -0
  57. package/managers/queue-method.manager.d.ts +13 -0
  58. package/managers/queue-method.manager.js +240 -0
  59. package/managers/subscription.manager.d.ts +28 -0
  60. package/managers/subscription.manager.js +808 -0
  61. package/managers/support.manager.d.ts +22 -0
  62. package/managers/support.manager.js +320 -0
  63. package/methods/accounts.d.ts +2 -0
  64. package/methods/accounts.js +253 -0
  65. package/methods/aws.d.ts +2 -0
  66. package/methods/aws.js +387 -0
  67. package/methods/cloudconvert.d.ts +2 -0
  68. package/methods/cloudconvert.js +37 -0
  69. package/methods/collections.d.ts +2 -0
  70. package/methods/collections.js +750 -0
  71. package/methods/counters.d.ts +2 -0
  72. package/methods/counters.js +107 -0
  73. package/methods/cron-jobs.d.ts +2 -0
  74. package/methods/cron-jobs.js +132 -0
  75. package/methods/flags.d.ts +2 -0
  76. package/methods/flags.js +6 -0
  77. package/methods/logs.d.ts +2 -0
  78. package/methods/logs.js +29 -0
  79. package/methods/pdf.d.ts +2 -0
  80. package/methods/pdf.js +303 -0
  81. package/models/active-subscription.model.d.ts +13 -0
  82. package/models/active-subscription.model.js +2 -0
  83. package/models/app-status.model.d.ts +4 -0
  84. package/models/app-status.model.js +2 -0
  85. package/models/app-version.model.d.ts +4 -0
  86. package/models/app-version.model.js +2 -0
  87. package/models/billing-logged-in-users.model.d.ts +7 -0
  88. package/models/billing-logged-in-users.model.js +2 -0
  89. package/models/collection-document.model.d.ts +6 -0
  90. package/models/collection-document.model.js +2 -0
  91. package/models/counter.model.d.ts +5 -0
  92. package/models/counter.model.js +2 -0
  93. package/models/cron-job-history.model.d.ts +12 -0
  94. package/models/cron-job-history.model.js +2 -0
  95. package/models/cron-job.model.d.ts +13 -0
  96. package/models/cron-job.model.js +2 -0
  97. package/models/dialog.model.d.ts +23 -0
  98. package/models/dialog.model.js +2 -0
  99. package/models/file.model.d.ts +9 -0
  100. package/models/file.model.js +2 -0
  101. package/models/flag.model.d.ts +5 -0
  102. package/models/flag.model.js +2 -0
  103. package/models/log.model.d.ts +11 -0
  104. package/models/log.model.js +2 -0
  105. package/models/logged-in-users.model.d.ts +9 -0
  106. package/models/logged-in-users.model.js +2 -0
  107. package/models/method-call.model.d.ts +7 -0
  108. package/models/method-call.model.js +2 -0
  109. package/models/method-response.model.d.ts +8 -0
  110. package/models/method-response.model.js +2 -0
  111. package/models/method.model.d.ts +10 -0
  112. package/models/method.model.js +2 -0
  113. package/models/notification.model.d.ts +4 -0
  114. package/models/notification.model.js +2 -0
  115. package/models/pagination.model.d.ts +11 -0
  116. package/models/pagination.model.js +20 -0
  117. package/models/permission.model.d.ts +12 -0
  118. package/models/permission.model.js +2 -0
  119. package/models/queue-method.model.d.ts +10 -0
  120. package/models/queue-method.model.js +2 -0
  121. package/models/queue-response.model.d.ts +10 -0
  122. package/models/queue-response.model.js +2 -0
  123. package/models/select-data-label.model.d.ts +9 -0
  124. package/models/select-data-label.model.js +2 -0
  125. package/models/server-response.model.d.ts +5 -0
  126. package/models/server-response.model.js +2 -0
  127. package/models/subscription.model.d.ts +30 -0
  128. package/models/subscription.model.js +2 -0
  129. package/models/support-method.model.d.ts +9 -0
  130. package/models/support-method.model.js +2 -0
  131. package/models/support-ticket.model.d.ts +61 -0
  132. package/models/support-ticket.model.js +2 -0
  133. package/models/user.model.d.ts +14 -0
  134. package/models/user.model.js +2 -0
  135. package/package.json +1 -1
  136. package/private/email-templates/enrollment.html +12 -0
  137. package/private/email-templates/forgot-password.html +12 -0
  138. package/private/email-templates/support-ticket-deleted.html +40 -0
  139. package/private/email-templates/support-ticket-modified.html +71 -0
  140. package/private/email-templates/support-ticket.html +71 -0
  141. package/private/images/ResolveIO.png +0 -0
  142. package/publications/app-status.d.ts +2 -0
  143. package/publications/app-status.js +14 -0
  144. package/publications/app-version.d.ts +2 -0
  145. package/publications/app-version.js +14 -0
  146. package/publications/billing-logged-in-users.d.ts +1 -0
  147. package/publications/billing-logged-in-users.js +63 -0
  148. package/publications/cron-jobs.d.ts +2 -0
  149. package/publications/cron-jobs.js +14 -0
  150. package/publications/files.d.ts +2 -0
  151. package/publications/files.js +71 -0
  152. package/publications/flags.d.ts +2 -0
  153. package/publications/flags.js +23 -0
  154. package/publications/logs.d.ts +2 -0
  155. package/publications/logs.js +26 -0
  156. package/publications/method-calls.d.ts +2 -0
  157. package/publications/method-calls.js +14 -0
  158. package/publications/method-responses.d.ts +2 -0
  159. package/publications/method-responses.js +14 -0
  160. package/publications/notifications.d.ts +2 -0
  161. package/publications/notifications.js +14 -0
  162. package/publications/super-admin.d.ts +2 -0
  163. package/publications/super-admin.js +21 -0
  164. package/publications/support-tickets.d.ts +1 -0
  165. package/publications/support-tickets.js +200 -0
  166. package/server-app.d.ts +35 -0
  167. package/server-app.js +638 -0
  168. package/support-methods/aws.d.ts +2 -0
  169. package/support-methods/aws.js +276 -0
  170. package/support-methods/collections.d.ts +2 -0
  171. package/support-methods/collections.js +471 -0
  172. package/support-methods/counters.d.ts +2 -0
  173. package/support-methods/counters.js +189 -0
  174. package/support-methods/support.d.ts +2 -0
  175. package/support-methods/support.js +236 -0
  176. package/util/common.d.ts +14 -0
  177. package/util/common.js +341 -0
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ var mongoose_1 = require("mongoose");
39
+ var queue_flag_collection_1 = require("../collections/queue-flag.collection");
40
+ var queue_method_collection_1 = require("../collections/queue-method.collection");
41
+ var queue_response_collection_1 = require("../collections/queue-response.collection");
42
+ var method_response_collection_1 = require("../collections/method-response.collection");
43
+ var log_collection_1 = require("../collections/log.collection");
44
+ var common_1 = require("../util/common");
45
+ var QueueMethodManager = /** @class */ (function () {
46
+ function QueueMethodManager(mainServer) {
47
+ var _this = this;
48
+ this._sendQueue = [];
49
+ this._runningQueue = false;
50
+ this._mainServer = mainServer;
51
+ setInterval(function () {
52
+ if (!_this._runningQueue) {
53
+ if (_this._sendQueue.length) {
54
+ _this._runningQueue = true;
55
+ var _loop_1 = function (i) {
56
+ var ws = _this._mainServer.getWS(_this._sendQueue[i].id_ws);
57
+ if (ws && ws.readyState === ws.OPEN) {
58
+ if (ws.bufferedAmount < 20480) {
59
+ var sendItem = _this._sendQueue.pop();
60
+ ws.send(JSON.stringify(sendItem.response), function (error) {
61
+ if (error) {
62
+ console.log('Error on WS: ', error);
63
+ _this._mainServer.unsubscribeWS(ws);
64
+ }
65
+ });
66
+ if (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'setWSAppVersion' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {
67
+ if (common_1.getBinarySize(JSON.stringify(sendItem.methodData)) < 200000 && common_1.getBinarySize(JSON.stringify(sendItem.data)) < 200000) {
68
+ log_collection_1.Logs.create({
69
+ _id: mongoose_1.Types.ObjectId().toHexString(),
70
+ date: new Date(),
71
+ type: 'client-response',
72
+ title: 'Client Response',
73
+ message: 'User: ' + ws['user'] + ', MessageId: ' + sendItem.messageId + ', Method: ' + sendItem.method,
74
+ payload: JSON.stringify([sendItem.methodData, sendItem.response]),
75
+ method: sendItem.method,
76
+ user: ws['user'],
77
+ messageId: sendItem.messageId
78
+ });
79
+ method_response_collection_1.MethodResponses.create({
80
+ _id: mongoose_1.Types.ObjectId().toHexString(),
81
+ __v: 0,
82
+ id_user: sendItem.id_user,
83
+ message_id: sendItem.messageId,
84
+ response: sendItem.response,
85
+ method: sendItem.method,
86
+ date: sendItem.date
87
+ });
88
+ }
89
+ else {
90
+ log_collection_1.Logs.create({
91
+ _id: mongoose_1.Types.ObjectId().toHexString(),
92
+ date: new Date(),
93
+ type: 'client-response',
94
+ title: 'Client Response',
95
+ message: 'User: ' + ws['user'] + ', MessageId: ' + sendItem.messageId + ', Method: ' + sendItem.method,
96
+ payload: 'Too Big',
97
+ method: sendItem.method,
98
+ user: ws['user'],
99
+ messageId: sendItem.messageId
100
+ });
101
+ }
102
+ }
103
+ }
104
+ }
105
+ };
106
+ for (var i = _this._sendQueue.length - 1; i >= 0; i--) {
107
+ _loop_1(i);
108
+ }
109
+ _this._runningQueue = false;
110
+ }
111
+ }
112
+ }, 25);
113
+ }
114
+ QueueMethodManager.prototype.addMethodToQueue = function (id_ws, id_user, user, messageDate, messageId, method, data) {
115
+ // console.log('Add Method To Queue', method);
116
+ queue_method_collection_1.QueueMethods.create({
117
+ _id: mongoose_1.Types.ObjectId().toHexString(),
118
+ __v: 0,
119
+ id_ws: id_ws,
120
+ messageId: messageId,
121
+ method: method,
122
+ method_data: data,
123
+ id_user: id_user,
124
+ user: user,
125
+ date: messageDate
126
+ });
127
+ };
128
+ QueueMethodManager.prototype.runMethodQueue = function (count) {
129
+ return __awaiter(this, void 0, void 0, function () {
130
+ var updateCnt, _a;
131
+ var _this = this;
132
+ return __generator(this, function (_b) {
133
+ switch (_b.label) {
134
+ case 0:
135
+ if (!count) return [3 /*break*/, 1];
136
+ _a = count;
137
+ return [3 /*break*/, 3];
138
+ case 1: return [4 /*yield*/, queue_method_collection_1.QueueMethods.collection.countDocuments()];
139
+ case 2:
140
+ _a = _b.sent();
141
+ _b.label = 3;
142
+ case 3:
143
+ updateCnt = _a;
144
+ if (updateCnt) {
145
+ // console.log('Run Method Queue', updateCnt);
146
+ queue_flag_collection_1.QueueFlags.create({ _id: 'method-queue', __v: 0 }).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
147
+ var updates, i, update;
148
+ return __generator(this, function (_a) {
149
+ switch (_a.label) {
150
+ case 0:
151
+ if (!res) return [3 /*break*/, 9];
152
+ return [4 /*yield*/, queue_method_collection_1.QueueMethods.find({}).sort({ createdAt: 1 })];
153
+ case 1:
154
+ updates = _a.sent();
155
+ i = 0;
156
+ _a.label = 2;
157
+ case 2:
158
+ if (!(i < updates.length)) return [3 /*break*/, 6];
159
+ update = updates[i];
160
+ return [4 /*yield*/, this._mainServer.getMethodManager().callMethodQueue(update)];
161
+ case 3:
162
+ _a.sent();
163
+ return [4 /*yield*/, queue_method_collection_1.QueueMethods.deleteOne({ _id: update._id }).exec()];
164
+ case 4:
165
+ _a.sent();
166
+ _a.label = 5;
167
+ case 5:
168
+ i++;
169
+ return [3 /*break*/, 2];
170
+ case 6: return [4 /*yield*/, queue_flag_collection_1.QueueFlags.deleteOne({ _id: 'method-queue' }).exec()];
171
+ case 7:
172
+ _a.sent();
173
+ return [4 /*yield*/, queue_method_collection_1.QueueMethods.collection.countDocuments()];
174
+ case 8:
175
+ updateCnt = _a.sent();
176
+ if (updateCnt) {
177
+ this.runMethodQueue(updateCnt);
178
+ }
179
+ _a.label = 9;
180
+ case 9: return [2 /*return*/];
181
+ }
182
+ });
183
+ }); }, function () { });
184
+ }
185
+ return [2 /*return*/];
186
+ }
187
+ });
188
+ });
189
+ };
190
+ QueueMethodManager.prototype.addMethodResponse = function (update, response) {
191
+ queue_response_collection_1.QueueResponses.create({
192
+ _id: mongoose_1.Types.ObjectId().toHexString(),
193
+ __v: 0,
194
+ id_ws: update.id_ws,
195
+ id_user: update.id_user,
196
+ user: update.user,
197
+ messageId: update.messageId,
198
+ response: response,
199
+ method: update.method,
200
+ date: update.date
201
+ });
202
+ };
203
+ QueueMethodManager.prototype.runMethodResponse = function () {
204
+ return __awaiter(this, void 0, void 0, function () {
205
+ var responseCnt, wsList, responses, i, response;
206
+ return __generator(this, function (_a) {
207
+ switch (_a.label) {
208
+ case 0: return [4 /*yield*/, queue_response_collection_1.QueueResponses.collection.countDocuments()];
209
+ case 1:
210
+ responseCnt = _a.sent();
211
+ if (!(responseCnt && !this._runningMethodResponse)) return [3 /*break*/, 7];
212
+ this._runningMethodResponse = true;
213
+ wsList = this._mainServer.getWSList();
214
+ return [4 /*yield*/, queue_response_collection_1.QueueResponses.find({ id_ws: { $in: wsList } })];
215
+ case 2:
216
+ responses = _a.sent();
217
+ i = 0;
218
+ _a.label = 3;
219
+ case 3:
220
+ if (!(i < responses.length)) return [3 /*break*/, 6];
221
+ response = responses[i];
222
+ this._sendQueue.splice(0, 0, response);
223
+ return [4 /*yield*/, queue_response_collection_1.QueueResponses.deleteOne({ _id: response._id }).exec()];
224
+ case 4:
225
+ _a.sent();
226
+ _a.label = 5;
227
+ case 5:
228
+ i++;
229
+ return [3 /*break*/, 3];
230
+ case 6:
231
+ this._runningMethodResponse = false;
232
+ _a.label = 7;
233
+ case 7: return [2 /*return*/];
234
+ }
235
+ });
236
+ });
237
+ };
238
+ return QueueMethodManager;
239
+ }());
240
+ exports.QueueMethodManager = QueueMethodManager;
@@ -0,0 +1,28 @@
1
+ import { SubscriptionModel } from '../models/subscription.model';
2
+ import * as WebSocket from 'ws';
3
+ export declare class SubscriptionManager {
4
+ private _mainServer;
5
+ private _publications;
6
+ private _subscriptions;
7
+ private _wss;
8
+ private _oplogQueue;
9
+ private _sendQueue;
10
+ private _runningQueue;
11
+ private serverConfig;
12
+ constructor(mainServer: any, wss: WebSocket.Server, serverConfig: any);
13
+ publications(method: SubscriptionModel): void;
14
+ loggedInLatency(ws: WebSocket): Promise<void>;
15
+ subscribe(ws: WebSocket, messageId: number, publication: string, ...subscriptionData: any[]): Promise<void>;
16
+ unsubscribe(ws: WebSocket, messageId: number, publication: string, ...subscriptionData: any[]): Promise<void>;
17
+ unsubscribeAll(ws: WebSocket): Promise<void>;
18
+ private getPublicationCollections;
19
+ private tailOpLog;
20
+ private tailOpLogSupport;
21
+ private runOpLogQueue;
22
+ private resendPubsForDelete;
23
+ private checkPubsForChanges;
24
+ private checkSupportPubsForChanges;
25
+ private sendPubDataOnce;
26
+ private sendPubData;
27
+ private sendWS;
28
+ }