@resolveio/server-lib 20.13.9 → 20.13.10
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/package.json +1 -1
- package/util/common.js +53 -20
- package/util/common.js.map +1 -1
package/package.json
CHANGED
package/util/common.js
CHANGED
|
@@ -10,6 +10,17 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __values = (this && this.__values) || function(o) {
|
|
14
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
15
|
+
if (m) return m.call(o);
|
|
16
|
+
if (o && typeof o.length === "number") return {
|
|
17
|
+
next: function () {
|
|
18
|
+
if (o && i >= o.length) o = void 0;
|
|
19
|
+
return { value: o && o[i++], done: !o };
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
23
|
+
};
|
|
13
24
|
var __read = (this && this.__read) || function (o, n) {
|
|
14
25
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
26
|
if (!m) return o;
|
|
@@ -26,17 +37,6 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
26
37
|
}
|
|
27
38
|
return ar;
|
|
28
39
|
};
|
|
29
|
-
var __values = (this && this.__values) || function(o) {
|
|
30
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
31
|
-
if (m) return m.call(o);
|
|
32
|
-
if (o && typeof o.length === "number") return {
|
|
33
|
-
next: function () {
|
|
34
|
-
if (o && i >= o.length) o = void 0;
|
|
35
|
-
return { value: o && o[i++], done: !o };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
39
|
-
};
|
|
40
40
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
41
41
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
42
42
|
if (ar || !(i in from)) {
|
|
@@ -239,11 +239,44 @@ function getAllowedOrigins(serverConfig) {
|
|
|
239
239
|
buildAllowedOrigins(process.env.ADDITIONAL_ALLOWED_ORIGINS).forEach(function (origin) { return allowedOrigins.add(origin); });
|
|
240
240
|
return Array.from(allowedOrigins);
|
|
241
241
|
}
|
|
242
|
+
function isWildcardOriginMatch(origin, allowedOrigin) {
|
|
243
|
+
if (!allowedOrigin || !allowedOrigin.includes('*')) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
var escaped = allowedOrigin.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
|
|
247
|
+
try {
|
|
248
|
+
var regex = new RegExp("^".concat(escaped, "$"), 'i');
|
|
249
|
+
return regex.test(origin);
|
|
250
|
+
}
|
|
251
|
+
catch (_a) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
242
255
|
function isAllowedOrigin(origin, serverConfig) {
|
|
256
|
+
var e_1, _a;
|
|
243
257
|
if (!origin) {
|
|
244
258
|
return false;
|
|
245
259
|
}
|
|
246
|
-
|
|
260
|
+
var allowedOrigins = getAllowedOrigins(serverConfig);
|
|
261
|
+
if (allowedOrigins.includes(origin)) {
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
try {
|
|
265
|
+
for (var allowedOrigins_1 = __values(allowedOrigins), allowedOrigins_1_1 = allowedOrigins_1.next(); !allowedOrigins_1_1.done; allowedOrigins_1_1 = allowedOrigins_1.next()) {
|
|
266
|
+
var allowedOrigin = allowedOrigins_1_1.value;
|
|
267
|
+
if (isWildcardOriginMatch(origin, allowedOrigin)) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
273
|
+
finally {
|
|
274
|
+
try {
|
|
275
|
+
if (allowedOrigins_1_1 && !allowedOrigins_1_1.done && (_a = allowedOrigins_1.return)) _a.call(allowedOrigins_1);
|
|
276
|
+
}
|
|
277
|
+
finally { if (e_1) throw e_1.error; }
|
|
278
|
+
}
|
|
279
|
+
return false;
|
|
247
280
|
}
|
|
248
281
|
function getMongoUpdates(currDoc, modifiedDoc, incVersion) {
|
|
249
282
|
if (currDoc.createdAt) {
|
|
@@ -428,7 +461,7 @@ function handleUnset(uDoc, unsetMap) {
|
|
|
428
461
|
}
|
|
429
462
|
}
|
|
430
463
|
function handlePull(uDoc, orig, pullMap) {
|
|
431
|
-
var
|
|
464
|
+
var e_2, _a;
|
|
432
465
|
for (var pathk in pullMap) {
|
|
433
466
|
var pullValues = pullMap[pathk];
|
|
434
467
|
var _loop_1 = function (vk) {
|
|
@@ -445,22 +478,22 @@ function handlePull(uDoc, orig, pullMap) {
|
|
|
445
478
|
}
|
|
446
479
|
};
|
|
447
480
|
try {
|
|
448
|
-
for (var pullValues_1 = (
|
|
481
|
+
for (var pullValues_1 = (e_2 = void 0, __values(pullValues)), pullValues_1_1 = pullValues_1.next(); !pullValues_1_1.done; pullValues_1_1 = pullValues_1.next()) {
|
|
449
482
|
var vk = pullValues_1_1.value;
|
|
450
483
|
_loop_1(vk);
|
|
451
484
|
}
|
|
452
485
|
}
|
|
453
|
-
catch (
|
|
486
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
454
487
|
finally {
|
|
455
488
|
try {
|
|
456
489
|
if (pullValues_1_1 && !pullValues_1_1.done && (_a = pullValues_1.return)) _a.call(pullValues_1);
|
|
457
490
|
}
|
|
458
|
-
finally { if (
|
|
491
|
+
finally { if (e_2) throw e_2.error; }
|
|
459
492
|
}
|
|
460
493
|
}
|
|
461
494
|
}
|
|
462
495
|
function handlePush(uDoc, pushMap) {
|
|
463
|
-
var
|
|
496
|
+
var e_3, _a;
|
|
464
497
|
for (var pathk in pushMap) {
|
|
465
498
|
var pushValues = pushMap[pathk];
|
|
466
499
|
// Normalize ─ accept $each, scalar, or array
|
|
@@ -480,7 +513,7 @@ function handlePush(uDoc, pushMap) {
|
|
|
480
513
|
values = [pushValues]; // scalar push
|
|
481
514
|
}
|
|
482
515
|
try {
|
|
483
|
-
for (var values_1 = (
|
|
516
|
+
for (var values_1 = (e_3 = void 0, __values(values)), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {
|
|
484
517
|
var vk = values_1_1.value;
|
|
485
518
|
var _b = __read(resolve(uDoc, pathk), 2), o = _b[0], n = _b[1];
|
|
486
519
|
if (o && n.length === 1 && Array.isArray(o[n[0]])) {
|
|
@@ -491,12 +524,12 @@ function handlePush(uDoc, pushMap) {
|
|
|
491
524
|
}
|
|
492
525
|
}
|
|
493
526
|
}
|
|
494
|
-
catch (
|
|
527
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
495
528
|
finally {
|
|
496
529
|
try {
|
|
497
530
|
if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);
|
|
498
531
|
}
|
|
499
|
-
finally { if (
|
|
532
|
+
finally { if (e_3) throw e_3.error; }
|
|
500
533
|
}
|
|
501
534
|
}
|
|
502
535
|
}
|
package/util/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/common.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,8CAGC;AAED,sCAiCC;AAED,wCAmDC;AAED,4BASC;AAED,wCAaC;AAED,sBAIC;AAED,wCAaC;AAED,4BAEC;AAED,kCAQC;AAgBD,8CAiBC;AAED,0CAMC;AAED,0CA6BC;AAED,0DAUC;AAGD,oCA2BC;AA8BD,kCAwBC;AAED,4CAaC;AAgKD,0CAuEC;AAED,sCAOC;AAED,kBAIC;AAED,oCAIC;AAED,kCAIC;AAED,4BAEC;AAED,8BAqBC;AAED,wEAgBC;AAvoBD,6CAA6C;AAC7C,IAAI,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAClC,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;AACzC,qDAAgD;AAChD,wCAA0C;AAC1C,mCAAmC;AAEnC,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7B,SAAgB,iBAAiB;IAChC,IAAI,QAAQ,GAAG,IAAI,kBAAQ,EAAE,CAAC;IAC9B,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC/B,CAAC;AAED,SAAgB,aAAa,CAAC,QAAa;IAC1C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;QAChC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;QACjC,CAAC;aACI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACvC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC;YAC7B,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC;QAChC,CAAC;aACI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;QACjC,CAAC;aACI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;YAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/B,CAAC;aACI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;QACjC,CAAC;aACI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;YACjC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;QAChC,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;QAChC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAgB,cAAc,CAAC,SAAyB,EAAE,aAAqB,EAAE,qBAAoC;IACpH,yEAAyE;IADO,sCAAA,EAAA,0BAAoC;IAGpH,SAAS,CAAC,OAAO,CAAC,UAAA,GAAG;QACpB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,QAAQ,EAAE,eAAe,CAAC;QAC9B,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC;QAE9M,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC9C,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC3D,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;aACI,CAAC;YACL,iCAAiC;YACjC,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC;QAC1B,CAAC;QACD,eAAe,GAAG,cAAc,GAAG,eAAe,CAAC;QAEnD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,SAAS,IAAI,iBAAiB,GAAG,GAAG,CAAC,SAAS,GAAG,kCAAkC,CAAC;QACrF,CAAC;aACI,IAAI,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvD,SAAS,IAAI,iBAAiB,GAAG,GAAG,CAAC,SAAS,GAAG,uBAAuB,CAAC;QAC1E,CAAC;QACD,IAAI,UAAU,GAAG;YAChB,iBAAiB,EAAE,GAAG,CAAC,MAAM;YAC7B,uBAAuB,EAAE,eAAe;YACxC,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,eAAe;YAC1B,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,QAAQ;SACd,CAAC;QAEF,aAAa,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC;QAE5C,IAAI,SAAS,EAAE,CAAC;YACf,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QACvD,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QAC1D,aAAa,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9C,aAAa,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,OAAO,aAAa,CAAC;AACtB,CAAC;AAED,SAAgB,QAAQ,CAAC,GAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,eAAoB;IAApB,gCAAA,EAAA,oBAAoB;IACvE,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,eAAe,GAAG,OAAO,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,SAAgB,cAAc,CAAC,KAAa,EAAE,SAAa;IAAb,0BAAA,EAAA,aAAa;IAC1D,IAAI,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAEnC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,SAAS,IAAI,CAAC,CAAC;QAChB,CAAC;QAED,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAClE,CAAC;AAED,SAAgB,KAAK,CAAC,KAAK,EAAE,SAAa;IAAb,0BAAA,EAAA,aAAa;IACzC,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACtC,IAAM,UAAU,GAAG,IAAI,CAAC;IACxB,OAAO,IAAI,CAAC,KAAK,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;AAC1D,CAAC;AAED,SAAgB,cAAc,CAAC,KAAa,EAAE,SAAa;IAAb,0BAAA,EAAA,aAAa;IAC1D,IAAI,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAEnC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,SAAS,IAAI,CAAC,CAAC;QAChB,CAAC;QAED,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAClE,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAK;IAC7B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,SAAgB,WAAW,CAAC,GAAG,EAAE,KAAK;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,8DAA8D,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnF,IAAI,CAAC,EAAE,CAAC;YACP,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5G,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,aAAa;IACzC,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,EAAnD,CAAmD,CAAC,CAAC;IAC5F,CAAC;SACI,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC5C,IAAI,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,IAAI,EAAE,EAAb,CAAa,CAAC,CAAC,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,EAAN,CAAM,CAAC,CAAC;QAClG,OAAO,GAAG,YAAY,CAAC;IACxB,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAlD,CAAkD,CAAC,CAAC;AACrF,CAAC;AAED,SAAgB,iBAAiB,CAAC,YAAY;IAC7C,IAAI,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,IAAI,WAAW,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,yBAAyB,CAAC,CAAC;IAE3F,WAAW,CAAC,OAAO,CAAC,UAAA,GAAG;QACtB,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,mBAAmB,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAA1B,CAA0B,CAAC,CAAC;IACnG,mBAAmB,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAA1B,CAA0B,CAAC,CAAC;IAC9G,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAA1B,CAA0B,CAAC,CAAC;IAC/F,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAA1B,CAA0B,CAAC,CAAC;IAE1G,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,eAAe,CAAC,MAAc,EAAE,YAAY;IAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU;IAC/D,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEjD,IAAI,OAAO,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACvD,OAAO,OAAO,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,GAAG,EAAC,GAAG,EAAE,CAAC,EAAC,CAAC;QACzB,CAAC;IACF,CAAC;SACI,CAAC;QACL,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,GAAG;gBACT,IAAI,EAAE,EAAC,GAAG,EAAE,CAAC,EAAC;aACd,CAAC;QACH,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM;IAChE,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa;IAC/C,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAE3B,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAExC,IAAI,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC;AACd,CAAC;AAGD,SAAgB,YAAY;IAAC,wBAAiB;SAAjB,UAAiB,EAAjB,qBAAiB,EAAjB,IAAiB;QAAjB,mCAAiB;;IAC1C,IAAM,MAAM,GAAG;QACX,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;KACZ,CAAC;IAEF,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ;QAC3C,QAAQ,CAAC,OAAO,CAAC,UAAA,MAAM;YACnB,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEnC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,GAAG;oBACJ,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oBACzC,MAAM;gBACV,KAAK,GAAG;oBACJ,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxC,MAAM;gBACV;oBACI,MAAM;YACd,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM;IAC/C,oCAAoC;IACpC,IAAI,OAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC5F,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACxE,CAAC;SACI,CAAC;QACL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;IAChC,CAAC;AACF,CAAC;AAGD,SAAS,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM;IAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAE5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAArD,CAAqD,CAAC,EAAE,CAAC;YAChG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;SACI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAArD,CAAqD,CAAC,EAAE,CAAC;YAC1F,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAgB,WAAW,CAAC,IAAI,EAAE,IAAI;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC;IAChB,OAAO,IAAI,CAAC,GAAG,CAAC;IAEhB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC;IAChB,OAAO,IAAI,CAAC,GAAG,CAAC;IAEhB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAS,EAAE,KAAU;IAClD,IAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,KAAK,EAAE,CAAC;QACR,IAAI,KAAK,CAAC,OAAO;YAAE,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,IAAI;YAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,IAAI;YAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM;YAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,KAAK;YAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,KAAK;YAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,IAAS,EAAE,SAAc;IAC3C,KAAK,IAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QACxB,IAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACjB,IAAA,KAAA,OAAW,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAA,EAA1B,EAAE,QAAA,EAAE,EAAE,QAAoB,CAAC;QAC5B,IAAA,KAAA,OAAW,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAA,EAA1B,EAAE,QAAA,EAAE,EAAE,QAAoB,CAAC;QAClC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAS,EAAE,MAAW;IACrC,KAAK,IAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,IAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,IAAA,KAAA,OAAS,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAA,EAAzC,CAAC,QAAA,EAAE,CAAC,QAAqC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAS,EAAE,MAAW;IACrC,KAAK,IAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,IAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,IAAA,KAAA,OAAS,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAA,EAAzC,CAAC,QAAA,EAAE,CAAC,QAAqC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACb,CAAC;YACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACR,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,IAAS,EAAE,QAAa;IACzC,KAAK,IAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACjB,IAAA,KAAA,OAAS,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAA,EAAxB,CAAC,QAAA,EAAE,CAAC,QAAoB,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,IAAS,EAAE,IAAS,EAAE,OAAY;;IAClD,KAAK,IAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gCACzB,EAAE;YACD,IAAA,KAAA,OAAS,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAA,EAA5B,CAAC,QAAA,EAAE,CAAC,QAAwB,CAAC;YAC9B,IAAA,KAAA,OAAW,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAA,EAA9B,EAAE,QAAA,EAAE,EAAE,QAAwB,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,IAAM,KAAK,GAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAxC,CAAwC,CAAC,CAAC;gBAC/F,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBAClB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC1B,CAAC;YACO,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;;;YAVL,KAAe,IAAA,8BAAA,SAAA,UAAU,CAAA,CAAA,sCAAA;gBAApB,IAAI,EAAE,uBAAA;wBAAF,EAAE;aAWV;;;;;;;;;IACL,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,IAAS,EAAE,OAAY;;IAC1C,KAAK,IAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAElC,6CAA6C;QAC7C,IAAI,MAAM,GAAU,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,UAAU,CAAC;QACrB,CAAC;aACI,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACvD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAU,oBAAoB;YACzD,CAAC;iBAAM,CAAC;gBACP,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAc,wBAAwB;YAC7D,CAAC;QACF,CAAC;aACI,CAAC;YACL,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAkB,cAAc;QACvD,CAAC;;YAED,KAAiB,IAAA,0BAAA,SAAA,MAAM,CAAA,CAAA,8BAAA,kDAAE,CAAC;gBAArB,IAAM,EAAE,mBAAA;gBACN,IAAA,KAAA,OAAS,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAA,EAA5B,CAAC,QAAA,EAAE,CAAC,QAAwB,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC;qBACI,CAAC;oBACL,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7B,CAAC;YACF,CAAC;;;;;;;;;IACF,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,CAAM,EAAE,CAAM,EAAE,IAAS,EAAE,GAAQ;IACjD,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,2BAA2B,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,OAAO,CAAC,CAAM,EAAE,IAAY,EAAE,OAAiB;IAAjB,wBAAA,EAAA,YAAiB;IACpD,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,IAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YAClB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM;YACV,CAAC;YACD,IAAM,SAAS,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;YAC/C,IAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;YACpE,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC;IACL,CAAC;IAED,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,MAAM,CAAC,IAAS,EAAE,IAAkB;IAAlB,qBAAA,EAAA,UAAkB;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACpE,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC7B,GAAG,CAAC,UAAA,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC,CAAC;SACD,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,eAAe,CAAC,OAAe,EAAE,OAAe;IAC5D,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE7B,IAAI,IAAI,GAAG,IAAA,+BAAY,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,IAAM,WAAW,GAAG,UAAC,KAAU;QAC9B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;aACI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAA1C,CAA0C,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gBACrF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB;QACtD,CAAC;aACI,CAAC;YACL,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAI,KAAK,OAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,CAAC;IACF,CAAC,CAAC;IAEF,IAAM,eAAe,GAAG,UAAC,IAAW,EAAE,IAAW;QAC1C,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,gBAAgB,CAAC,IAAI,CAAC,2BAAoB,CAAC,eAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;YAC5E,CAAC;iBACL,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,gBAAgB,CAAC,IAAI,CAAC,yBAAkB,CAAC,eAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;YAC1E,CAAC;iBACL,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,gBAAgB,CAAC,IAAI,CAAC,2BAAoB,CAAC,gBAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAG,CAAC,CAAC;YAC5F,CAAC;QACL,CAAC;QAED,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC;IAEL,IAAM,gBAAgB,GAAG,UAAC,IAAS,EAAE,IAAS;QAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5F,OAAO,gBAAS,WAAW,CAAC,IAAI,CAAC,kBAAQ,WAAW,CAAC,IAAI,CAAC,CAAE,CAAC;QAC9D,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,OAAO,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,uBAAK,IAAI,GAAK,IAAI,EAAE,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAA5C,CAA4C,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;YACvG,IAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7C,IAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7C,OAAO,UAAG,WAAW,CAAC,GAAG,CAAC,eAAK,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAE,CAAC;QACrE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;IAEF,wBAAwB;IACxB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ;QAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACzC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAA3H,CAA2H,CAAC;iBAC1I,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAhD,CAAgD,CAAC;iBAC/D,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,YAAK,WAAW,CAAC,GAAG,CAAC,eAAK,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,EAAlE,CAAkE,CAAC;iBAC9E,IAAI,CAAC,GAAG,CAAC,CAAC;YAEZ,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,UAAG,OAAO,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,SAAgB,aAAa,CAAC,MAAM;IACnC,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;SACI,CAAC;QACL,OAAO,CAAC,CAAC;IACV,CAAC;AACF,CAAC;AAED,SAAgB,GAAG,CAAC,GAAG,EAAE,IAAI;IAC5B,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;IACjB,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAAC,CAAC;IACxC,OAAO,CAAC,CAAC;AACV,CAAC;AAED,SAAgB,YAAY,CAAC,MAAM,EAAE,KAAK;IACzC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAAC,CAAC;IAC/F,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAgB,WAAW,CAAC,GAAG;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAS,GAAG;QACxC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAI;IAC5B,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,SAAS,CAAC,MAAM;;IAAE,iBAAU;SAAV,UAAU,EAAV,qBAAU,EAAV,IAAU;QAAV,gCAAU;;IAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,KAAK,IAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,MAAM,CAAC,MAAM,CAAC,MAAM,YAAI,GAAC,GAAG,IAAG,EAAE,MAAG,CAAC;gBACtC,CAAC;gBACD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,CAAC;iBACI,CAAC;gBACL,MAAM,CAAC,MAAM,CAAC,MAAM,YAAI,GAAC,GAAG,IAAG,MAAM,CAAC,GAAG,CAAC,MAAG,CAAC;YAC/C,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,SAAS,8BAAC,MAAM,UAAK,OAAO,WAAE;AACtC,CAAC;AAED,SAAgB,8BAA8B,CAAC,GAAQ,EAAE,MAAgB;IACxE,IAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;QACnB,IAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAClD,IAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI;gBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B;gBAC1D,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC","file":"common.js","sourcesContent":["/* eslint-disable no-restricted-properties */\nlet rusDiff = require('rus-diff');\nlet deepDiff = require('deep-diff').diff;\nimport { detailedDiff } from 'deep-object-diff';\nimport * as moment from 'moment-timezone';\nimport { ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nlet clone = require('clone');\n\nexport function objectIdHexString() {\n\tlet objectId = new ObjectId();\n\treturn objectId.toHexString();\n}\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(1);\n}\n\nexport function roundPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.round(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function round(value, precision = 0) {\n\tconst power = Math.pow(10, precision);\n\tconst adjustment = 1e-6;\n\treturn Math.round( (value * power) + adjustment) / power;\n}\n\nexport function floorPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.floor(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function deepCopy(value) {\n\treturn clone(value);\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\nfunction buildAllowedOrigins(configOrigins): string[] {\n\tlet origins = [];\n\n\tif (Array.isArray(configOrigins)) {\n\t\torigins = configOrigins.map(origin => typeof origin === 'string' ? origin.trim() : origin);\n\t}\n\telse if (typeof configOrigins === 'string') {\n\t\tlet splitOrigins = configOrigins.split(',').map(origin => origin.trim()).filter(origin => origin);\n\t\torigins = splitOrigins;\n\t}\n\n\treturn origins.filter(origin => typeof origin === 'string' && origin.trim() !== '');\n}\n\nexport function getAllowedOrigins(serverConfig): string[] {\n\tlet allowedOrigins = new Set<string>();\n\tlet defaultKeys = ['ROOT_URL', 'SEC_ROOT_URL', 'RESOLVEIO_URL', 'RESOLVEIO_SECONDARY_URL'];\n\n\tdefaultKeys.forEach(key => {\n\t\tlet value = serverConfig[key];\n\t\tif (typeof value === 'string' && value.trim()) {\n\t\t\tallowedOrigins.add(value.trim());\n\t\t}\n\t});\n\n\tbuildAllowedOrigins(serverConfig['ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(serverConfig['ADDITIONAL_ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(process.env.ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(process.env.ADDITIONAL_ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));\n\n\treturn Array.from(allowedOrigins);\n}\n\nexport function isAllowedOrigin(origin: string, serverConfig): boolean {\n\tif (!origin) {\n\t\treturn false;\n\t}\n\n\treturn getAllowedOrigins(serverConfig).includes(origin);\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(currentDoc); // was oldDoc\n\tupDoc.__v = currentDoc.__v;\n\n\tlet diff_1 = getDeepDiff(oldDoc, currentDoc);\n\tlet diff_2 = getDeepDiff(oldDoc, f_doc);\n\n\tlet updates = mergeUpdates(diff_2, diff_1);\n\tapplyMongoUpdate(upDoc, updates);\n\treturn upDoc;\n}\n\n\nexport function mergeUpdates(...updatesToMerge) {\n const merged = {\n $set: {},\n $unset: {},\n $inc: {},\n $push: {},\n $pull: {}\n };\n\n updatesToMerge.filter(Boolean).forEach(anUpdate => {\n anUpdate.forEach(change => {\n const path = change.path.join('.');\n\n switch (change.kind) {\n case 'E':\n handleEditedChange(merged, path, change);\n break;\n case 'A':\n handleArrayChange(merged, path, change);\n break;\n default:\n break;\n }\n });\n });\n\n return merged;\n}\n\nfunction handleEditedChange(merged, path, change) {\n\t// Later diffs override earlier ones\n\tif (typeof(change.rhs) === 'number' && (path.includes('quantity') || path.includes('qty'))) {\n\t\tmerged.$inc[path] = (merged.$inc[path] || 0) + change.rhs - change.lhs;\n\t}\n\telse {\n\t\tmerged.$set[path] = change.rhs;\n\t}\n}\n\n\nfunction handleArrayChange(merged, path, change) {\n\tif (change.item.kind === 'N') {\n\t\tif (!merged.$push[path]) merged.$push[path] = { $each: [] };\n\n\t\tif (!merged.$push[path].$each.some(a => JSON.stringify(a) === JSON.stringify(change.item.rhs))) {\n\t\t\tmerged.$push[path].$each.push(change.item.rhs);\n\t\t}\n\t}\n\telse if (change.item.kind === 'D') {\n\t\tif (!merged.$pull[path]) merged.$pull[path] = [];\n\n\t\tif (!merged.$pull[path].some(a => JSON.stringify(a) === JSON.stringify(change.item.lhs))) {\n\t\t\tmerged.$pull[path].push(change.item.lhs);\n\t\t}\n\t}\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: any, delta: any): any {\n const orig = deepCopy(uDoc);\n\n if (delta) {\n if (delta.$rename) handleRename(uDoc, delta.$rename);\n if (delta.$set) handleSet(uDoc, delta.$set);\n if (delta.$inc) handleInc(uDoc, delta.$inc);\n if (delta.$unset) handleUnset(uDoc, delta.$unset);\n if (delta.$pull) handlePull(uDoc, orig, delta.$pull);\n if (delta.$push) handlePush(uDoc, delta.$push);\n }\n\n return uDoc;\n}\n\nfunction handleRename(uDoc: any, renameMap: any) {\n for (const k in renameMap) {\n const v = renameMap[k];\n const [o1, n1] = resolve(uDoc, k);\n const [o2, n2] = resolve(uDoc, v);\n if (o1 && n1.length === 1) {\n if (o2 && n2.length === 1) {\n o2[n2[0]] = o1[n1[0]];\n delete o1[n1[0]];\n } else {\n logError(o2, n2, uDoc, v);\n }\n } else {\n logError(o1, n1, uDoc, k);\n }\n }\n}\n\nfunction handleSet(uDoc: any, setMap: any) {\n for (const k in setMap) {\n const v = setMap[k];\n const [o, n] = resolve(uDoc, k, { force: true });\n if (o && n.length === 1) {\n o[n[0]] = v;\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handleInc(uDoc: any, incMap: any) {\n for (const k in incMap) {\n const v = incMap[k];\n const [o, n] = resolve(uDoc, k, { force: true });\n if (o && n.length === 1) {\n\t\t\tif (typeof o[n[0]] !== 'number') {\n\t\t\t\to[n[0]] = 0;\n\t\t\t}\n\t\t\to[n[0]] += v;\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handleUnset(uDoc: any, unsetMap: any) {\n for (const k in unsetMap) {\n const [o, n] = resolve(uDoc, k);\n if (o && n.length === 1) {\n delete o[n[0]];\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handlePull(uDoc: any, orig: any, pullMap: any) {\n for (const pathk in pullMap) {\n const pullValues = pullMap[pathk];\n for (let vk of pullValues) {\n const [o, n] = resolve(uDoc, pathk);\n const [o2, n2] = resolve(orig, pathk);\n if (o && n.length === 1) {\n\t\t\t\tconst index = (<Array<any>>o2[n2[0]]).findIndex(z => JSON.stringify(z) === JSON.stringify(vk));\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\to[n[0]].splice(index, 1);\n\t\t\t\t}\n } else {\n logError(o, n, uDoc, pathk);\n }\n }\n }\n}\n\nfunction handlePush(uDoc: any, pushMap: any) {\n\tfor (const pathk in pushMap) {\n\t\tconst pushValues = pushMap[pathk];\n\n\t\t// Normalize ─ accept $each, scalar, or array\n\t\tlet values: any[] = [];\n\t\tif (Array.isArray(pushValues)) {\n\t\t\tvalues = pushValues;\n\t\t}\n\t\telse if (pushValues && typeof pushValues === 'object') {\n\t\t\tif (Array.isArray(pushValues.$each)) {\n\t\t\t\tvalues = pushValues.$each; // canonical `$each`\n\t\t\t} else {\n\t\t\t\tvalues = [pushValues]; // single element object\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tvalues = [pushValues]; // scalar push\n\t\t}\n\n\t\tfor (const vk of values) {\n\t\t\tconst [o, n] = resolve(uDoc, pathk);\n\t\t\tif (o && n.length === 1 && Array.isArray(o[n[0]])) {\n\t\t\t\to[n[0]].push(vk);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlogError(o, n, uDoc, pathk);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction logError(o: any, n: any, uDoc: any, key: any) {\n console.log('Error', o + '/' + n + ' - couldn\\'t resolve for ' + JSON.stringify(uDoc) + ' ' + key);\n}\n\nfunction resolve(a: any, path: string, options: any = {}): [any, any] {\n const stack = arrize(path);\n let last = [];\n\n if (stack.length > 0) {\n last.unshift(stack.pop());\n }\n\n let e = a;\n while (stack.length > 0) {\n const k = stack.shift();\n if (e[k] !== void 0) {\n e = e[k];\n } else {\n if (!options.force) {\n last.unshift(k);\n last = stack.concat(last);\n break;\n }\n const isNextNum = typeof stack[0] === 'number';\n const isLastNum = stack.length === 0 && typeof last[0] === 'number';\n e[k] = isNextNum || isLastNum ? [] : {};\n e = e[k];\n }\n }\n\n return [e, last];\n}\n\nfunction arrize(path: any, glue: string = '.'): string[] {\n if (Array.isArray(path)) {\n return path.slice();\n }\n\n if (path === void 0 || path === null || path === false || path === '') {\n return [];\n }\n\n return path.toString().split(glue)\n .map(e => {\n if ([void 0, null, false, ''].includes(e)) {\n return null;\n }\n return e.toString();\n })\n .filter(e => e !== null);\n}\n\nexport function deepDiffDetails(object1: Object, object2: Object): string {\n let obj1 = deepCopy(object1);\n\tlet obj2 = deepCopy(object2);\n\n\tlet diff = detailedDiff(obj1, obj2);\n\tlet diffString = '';\n\n\tconst formatValue = (value: any): string => {\n\t\tif (value instanceof Date) {\n\t\t\treturn moment(value).format('llll');\n\t\t} \n\t\telse if (typeof value === 'object' && value !== null) {\n\t\t\tObject.keys(value).filter(a => a.startsWith('_id') || a.startsWith('id_')).forEach(key => {\n\t\t\t\tdelete value[key];\n\t\t\t});\n\t\t\treturn JSON.stringify(value); // Pretty print objects\n\t\t} \n\t\telse {\n\t\t\treturn typeof value === 'string' ? `\"${value}\"` : String(value);\n\t\t}\n\t};\n\n\tconst customArrayDiff = (arr1: any[], arr2: any[]): string => {\n let arrayDiffResults = [];\n const maxLength = Math.max(arr1.length, arr2.length);\n\n for (let i = 0; i < maxLength; i++) {\n if (arr1[i] && !arr2[i]) {\n arrayDiffResults.push(`Removed at index ${i}: ${formatValue(arr1[i])}`);\n } \n\t\t\telse if (!arr1[i] && arr2[i]) {\n arrayDiffResults.push(`Added at index ${i}: ${formatValue(arr2[i])}`);\n } \n\t\t\telse if (arr1[i] && arr2[i] && JSON.stringify(arr1[i]) !== JSON.stringify(arr2[i])) {\n arrayDiffResults.push(`Changed at index ${i}: {${formatObjectDiff(arr1[i], arr2[i])}}`);\n }\n }\n\n return arrayDiffResults.join(', ');\n };\n\n\tconst formatObjectDiff = (obj1: any, obj2: any): string => {\n\t\tif (obj1 === null || obj2 === null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {\n\t\t\treturn `from: ${formatValue(obj1)} to: ${formatValue(obj2)}`;\n\t\t}\n\n\t\tif (Array.isArray(obj1) || Array.isArray(obj2)) {\n\t\t\treturn customArrayDiff(Array.isArray(obj1) ? obj1 : [], Array.isArray(obj2) ? obj2 : []);\n\t\t}\n\n\t\treturn Object.keys({...obj1, ...obj2}).filter(a => !a.startsWith('_id') && !a.startsWith('id_')).map(key => {\n\t\t\tconst obj1Val = obj1 ? obj1[key] : undefined;\n\t\t\tconst obj2Val = obj2 ? obj2[key] : undefined;\n\t\t\treturn `${toTitleCase(key)}: ${formatObjectDiff(obj1Val, obj2Val)}`;\n\t\t}).join(', ');\n\t};\n\n\t// Handle each diff type\n\t['added', 'deleted', 'updated'].forEach(diffType => {\n\t\tif (Object.keys(diff[diffType]).length > 0) {\n\t\t\tconst updates = Object.keys(diff[diffType])\n\t\t\t\t.filter(key => diffType === 'added' ? true : (diffType === 'deleted' ? !diff['added'][key] : !diff['added'][key] && !diff['deleted'][key]))\n\t\t\t\t.filter(key => !key.startsWith('_id') && !key.startsWith('id_'))\n\t\t\t\t.map(key => `\\n${toTitleCase(key)}: ${formatObjectDiff(obj1[key], obj2[key])}`)\n\t\t\t\t.join(',');\n\n\t\t\tdiffString += updates ? `${updates}` : '';\n\t\t}\n\t});\n\n\treturn diffString;\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}\n\nexport function generateSearchTokensFromFields(doc: any, fields: string[]): string[] {\n\tconst tokens = new Set<string>();\n\n\tfields.forEach(field => {\n\t\tconst val = doc[field];\n\t\tif (typeof val === 'string' && val.trim().length) {\n\t\t\tconst words = val.toLowerCase().split(/\\s+/);\n\t\t\twords.forEach(word => {\n\t\t\t\tfor (let i = 3; i <= word.length; i++) {\n\t\t\t\t\ttokens.add(word.slice(0, i)); // prefix-based tokens only\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\treturn Array.from(tokens);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["/* eslint-disable no-restricted-properties */\nlet rusDiff = require('rus-diff');\nlet deepDiff = require('deep-diff').diff;\nimport { detailedDiff } from 'deep-object-diff';\nimport * as moment from 'moment-timezone';\nimport { ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nlet clone = require('clone');\n\nexport function objectIdHexString() {\n\tlet objectId = new ObjectId();\n\treturn objectId.toHexString();\n}\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(1);\n}\n\nexport function roundPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.round(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function round(value, precision = 0) {\n\tconst power = Math.pow(10, precision);\n\tconst adjustment = 1e-6;\n\treturn Math.round( (value * power) + adjustment) / power;\n}\n\nexport function floorPrecision(value: number, precision = 0) {\n\tlet stringValue = value.toString();\n\t\n\tif (stringValue.includes('.')) {\n\t\tif (stringValue[0] === '0') {\n\t\t\tprecision += 1;\n\t\t}\n\t\t\n\t\tprecision -= stringValue.indexOf('.');\n\t}\n\n\tconst exponent = Math.pow(10, precision);\n\treturn Math.floor(parseFloat(stringValue) * exponent) / exponent;\n}\n\nexport function deepCopy(value) {\n\treturn clone(value);\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\nfunction buildAllowedOrigins(configOrigins): string[] {\n\tlet origins = [];\n\n\tif (Array.isArray(configOrigins)) {\n\t\torigins = configOrigins.map(origin => typeof origin === 'string' ? origin.trim() : origin);\n\t}\n\telse if (typeof configOrigins === 'string') {\n\t\tlet splitOrigins = configOrigins.split(',').map(origin => origin.trim()).filter(origin => origin);\n\t\torigins = splitOrigins;\n\t}\n\n\treturn origins.filter(origin => typeof origin === 'string' && origin.trim() !== '');\n}\n\nexport function getAllowedOrigins(serverConfig): string[] {\n\tlet allowedOrigins = new Set<string>();\n\tlet defaultKeys = ['ROOT_URL', 'SEC_ROOT_URL', 'RESOLVEIO_URL', 'RESOLVEIO_SECONDARY_URL'];\n\n\tdefaultKeys.forEach(key => {\n\t\tlet value = serverConfig[key];\n\t\tif (typeof value === 'string' && value.trim()) {\n\t\t\tallowedOrigins.add(value.trim());\n\t\t}\n\t});\n\n\tbuildAllowedOrigins(serverConfig['ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(serverConfig['ADDITIONAL_ALLOWED_ORIGINS']).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(process.env.ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));\n\tbuildAllowedOrigins(process.env.ADDITIONAL_ALLOWED_ORIGINS).forEach(origin => allowedOrigins.add(origin));\n\n\treturn Array.from(allowedOrigins);\n}\n\nfunction isWildcardOriginMatch(origin: string, allowedOrigin: string): boolean {\n\tif (!allowedOrigin || !allowedOrigin.includes('*')) {\n\t\treturn false;\n\t}\n\n\tconst escaped = allowedOrigin.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&').replace(/\\*/g, '.*');\n\ttry {\n\t\tconst regex = new RegExp(`^${escaped}$`, 'i');\n\t\treturn regex.test(origin);\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nexport function isAllowedOrigin(origin: string, serverConfig): boolean {\n\tif (!origin) {\n\t\treturn false;\n\t}\n\n\tconst allowedOrigins = getAllowedOrigins(serverConfig);\n\tif (allowedOrigins.includes(origin)) {\n\t\treturn true;\n\t}\n\n\tfor (const allowedOrigin of allowedOrigins) {\n\t\tif (isWildcardOriginMatch(origin, allowedOrigin)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\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(currentDoc); // was oldDoc\n\tupDoc.__v = currentDoc.__v;\n\n\tlet diff_1 = getDeepDiff(oldDoc, currentDoc);\n\tlet diff_2 = getDeepDiff(oldDoc, f_doc);\n\n\tlet updates = mergeUpdates(diff_2, diff_1);\n\tapplyMongoUpdate(upDoc, updates);\n\treturn upDoc;\n}\n\n\nexport function mergeUpdates(...updatesToMerge) {\n const merged = {\n $set: {},\n $unset: {},\n $inc: {},\n $push: {},\n $pull: {}\n };\n\n updatesToMerge.filter(Boolean).forEach(anUpdate => {\n anUpdate.forEach(change => {\n const path = change.path.join('.');\n\n switch (change.kind) {\n case 'E':\n handleEditedChange(merged, path, change);\n break;\n case 'A':\n handleArrayChange(merged, path, change);\n break;\n default:\n break;\n }\n });\n });\n\n return merged;\n}\n\nfunction handleEditedChange(merged, path, change) {\n\t// Later diffs override earlier ones\n\tif (typeof(change.rhs) === 'number' && (path.includes('quantity') || path.includes('qty'))) {\n\t\tmerged.$inc[path] = (merged.$inc[path] || 0) + change.rhs - change.lhs;\n\t}\n\telse {\n\t\tmerged.$set[path] = change.rhs;\n\t}\n}\n\n\nfunction handleArrayChange(merged, path, change) {\n\tif (change.item.kind === 'N') {\n\t\tif (!merged.$push[path]) merged.$push[path] = { $each: [] };\n\n\t\tif (!merged.$push[path].$each.some(a => JSON.stringify(a) === JSON.stringify(change.item.rhs))) {\n\t\t\tmerged.$push[path].$each.push(change.item.rhs);\n\t\t}\n\t}\n\telse if (change.item.kind === 'D') {\n\t\tif (!merged.$pull[path]) merged.$pull[path] = [];\n\n\t\tif (!merged.$pull[path].some(a => JSON.stringify(a) === JSON.stringify(change.item.lhs))) {\n\t\t\tmerged.$pull[path].push(change.item.lhs);\n\t\t}\n\t}\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: any, delta: any): any {\n const orig = deepCopy(uDoc);\n\n if (delta) {\n if (delta.$rename) handleRename(uDoc, delta.$rename);\n if (delta.$set) handleSet(uDoc, delta.$set);\n if (delta.$inc) handleInc(uDoc, delta.$inc);\n if (delta.$unset) handleUnset(uDoc, delta.$unset);\n if (delta.$pull) handlePull(uDoc, orig, delta.$pull);\n if (delta.$push) handlePush(uDoc, delta.$push);\n }\n\n return uDoc;\n}\n\nfunction handleRename(uDoc: any, renameMap: any) {\n for (const k in renameMap) {\n const v = renameMap[k];\n const [o1, n1] = resolve(uDoc, k);\n const [o2, n2] = resolve(uDoc, v);\n if (o1 && n1.length === 1) {\n if (o2 && n2.length === 1) {\n o2[n2[0]] = o1[n1[0]];\n delete o1[n1[0]];\n } else {\n logError(o2, n2, uDoc, v);\n }\n } else {\n logError(o1, n1, uDoc, k);\n }\n }\n}\n\nfunction handleSet(uDoc: any, setMap: any) {\n for (const k in setMap) {\n const v = setMap[k];\n const [o, n] = resolve(uDoc, k, { force: true });\n if (o && n.length === 1) {\n o[n[0]] = v;\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handleInc(uDoc: any, incMap: any) {\n for (const k in incMap) {\n const v = incMap[k];\n const [o, n] = resolve(uDoc, k, { force: true });\n if (o && n.length === 1) {\n\t\t\tif (typeof o[n[0]] !== 'number') {\n\t\t\t\to[n[0]] = 0;\n\t\t\t}\n\t\t\to[n[0]] += v;\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handleUnset(uDoc: any, unsetMap: any) {\n for (const k in unsetMap) {\n const [o, n] = resolve(uDoc, k);\n if (o && n.length === 1) {\n delete o[n[0]];\n } else {\n logError(o, n, uDoc, k);\n }\n }\n}\n\nfunction handlePull(uDoc: any, orig: any, pullMap: any) {\n for (const pathk in pullMap) {\n const pullValues = pullMap[pathk];\n for (let vk of pullValues) {\n const [o, n] = resolve(uDoc, pathk);\n const [o2, n2] = resolve(orig, pathk);\n if (o && n.length === 1) {\n\t\t\t\tconst index = (<Array<any>>o2[n2[0]]).findIndex(z => JSON.stringify(z) === JSON.stringify(vk));\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\to[n[0]].splice(index, 1);\n\t\t\t\t}\n } else {\n logError(o, n, uDoc, pathk);\n }\n }\n }\n}\n\nfunction handlePush(uDoc: any, pushMap: any) {\n\tfor (const pathk in pushMap) {\n\t\tconst pushValues = pushMap[pathk];\n\n\t\t// Normalize ─ accept $each, scalar, or array\n\t\tlet values: any[] = [];\n\t\tif (Array.isArray(pushValues)) {\n\t\t\tvalues = pushValues;\n\t\t}\n\t\telse if (pushValues && typeof pushValues === 'object') {\n\t\t\tif (Array.isArray(pushValues.$each)) {\n\t\t\t\tvalues = pushValues.$each; // canonical `$each`\n\t\t\t} else {\n\t\t\t\tvalues = [pushValues]; // single element object\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tvalues = [pushValues]; // scalar push\n\t\t}\n\n\t\tfor (const vk of values) {\n\t\t\tconst [o, n] = resolve(uDoc, pathk);\n\t\t\tif (o && n.length === 1 && Array.isArray(o[n[0]])) {\n\t\t\t\to[n[0]].push(vk);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlogError(o, n, uDoc, pathk);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction logError(o: any, n: any, uDoc: any, key: any) {\n console.log('Error', o + '/' + n + ' - couldn\\'t resolve for ' + JSON.stringify(uDoc) + ' ' + key);\n}\n\nfunction resolve(a: any, path: string, options: any = {}): [any, any] {\n const stack = arrize(path);\n let last = [];\n\n if (stack.length > 0) {\n last.unshift(stack.pop());\n }\n\n let e = a;\n while (stack.length > 0) {\n const k = stack.shift();\n if (e[k] !== void 0) {\n e = e[k];\n } else {\n if (!options.force) {\n last.unshift(k);\n last = stack.concat(last);\n break;\n }\n const isNextNum = typeof stack[0] === 'number';\n const isLastNum = stack.length === 0 && typeof last[0] === 'number';\n e[k] = isNextNum || isLastNum ? [] : {};\n e = e[k];\n }\n }\n\n return [e, last];\n}\n\nfunction arrize(path: any, glue: string = '.'): string[] {\n if (Array.isArray(path)) {\n return path.slice();\n }\n\n if (path === void 0 || path === null || path === false || path === '') {\n return [];\n }\n\n return path.toString().split(glue)\n .map(e => {\n if ([void 0, null, false, ''].includes(e)) {\n return null;\n }\n return e.toString();\n })\n .filter(e => e !== null);\n}\n\nexport function deepDiffDetails(object1: Object, object2: Object): string {\n let obj1 = deepCopy(object1);\n\tlet obj2 = deepCopy(object2);\n\n\tlet diff = detailedDiff(obj1, obj2);\n\tlet diffString = '';\n\n\tconst formatValue = (value: any): string => {\n\t\tif (value instanceof Date) {\n\t\t\treturn moment(value).format('llll');\n\t\t} \n\t\telse if (typeof value === 'object' && value !== null) {\n\t\t\tObject.keys(value).filter(a => a.startsWith('_id') || a.startsWith('id_')).forEach(key => {\n\t\t\t\tdelete value[key];\n\t\t\t});\n\t\t\treturn JSON.stringify(value); // Pretty print objects\n\t\t} \n\t\telse {\n\t\t\treturn typeof value === 'string' ? `\"${value}\"` : String(value);\n\t\t}\n\t};\n\n\tconst customArrayDiff = (arr1: any[], arr2: any[]): string => {\n let arrayDiffResults = [];\n const maxLength = Math.max(arr1.length, arr2.length);\n\n for (let i = 0; i < maxLength; i++) {\n if (arr1[i] && !arr2[i]) {\n arrayDiffResults.push(`Removed at index ${i}: ${formatValue(arr1[i])}`);\n } \n\t\t\telse if (!arr1[i] && arr2[i]) {\n arrayDiffResults.push(`Added at index ${i}: ${formatValue(arr2[i])}`);\n } \n\t\t\telse if (arr1[i] && arr2[i] && JSON.stringify(arr1[i]) !== JSON.stringify(arr2[i])) {\n arrayDiffResults.push(`Changed at index ${i}: {${formatObjectDiff(arr1[i], arr2[i])}}`);\n }\n }\n\n return arrayDiffResults.join(', ');\n };\n\n\tconst formatObjectDiff = (obj1: any, obj2: any): string => {\n\t\tif (obj1 === null || obj2 === null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {\n\t\t\treturn `from: ${formatValue(obj1)} to: ${formatValue(obj2)}`;\n\t\t}\n\n\t\tif (Array.isArray(obj1) || Array.isArray(obj2)) {\n\t\t\treturn customArrayDiff(Array.isArray(obj1) ? obj1 : [], Array.isArray(obj2) ? obj2 : []);\n\t\t}\n\n\t\treturn Object.keys({...obj1, ...obj2}).filter(a => !a.startsWith('_id') && !a.startsWith('id_')).map(key => {\n\t\t\tconst obj1Val = obj1 ? obj1[key] : undefined;\n\t\t\tconst obj2Val = obj2 ? obj2[key] : undefined;\n\t\t\treturn `${toTitleCase(key)}: ${formatObjectDiff(obj1Val, obj2Val)}`;\n\t\t}).join(', ');\n\t};\n\n\t// Handle each diff type\n\t['added', 'deleted', 'updated'].forEach(diffType => {\n\t\tif (Object.keys(diff[diffType]).length > 0) {\n\t\t\tconst updates = Object.keys(diff[diffType])\n\t\t\t\t.filter(key => diffType === 'added' ? true : (diffType === 'deleted' ? !diff['added'][key] : !diff['added'][key] && !diff['deleted'][key]))\n\t\t\t\t.filter(key => !key.startsWith('_id') && !key.startsWith('id_'))\n\t\t\t\t.map(key => `\\n${toTitleCase(key)}: ${formatObjectDiff(obj1[key], obj2[key])}`)\n\t\t\t\t.join(',');\n\n\t\t\tdiffString += updates ? `${updates}` : '';\n\t\t}\n\t});\n\n\treturn diffString;\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}\n\nexport function generateSearchTokensFromFields(doc: any, fields: string[]): string[] {\n\tconst tokens = new Set<string>();\n\n\tfields.forEach(field => {\n\t\tconst val = doc[field];\n\t\tif (typeof val === 'string' && val.trim().length) {\n\t\t\tconst words = val.toLowerCase().split(/\\s+/);\n\t\t\twords.forEach(word => {\n\t\t\t\tfor (let i = 3; i <= word.length; i++) {\n\t\t\t\t\ttokens.add(word.slice(0, i)); // prefix-based tokens only\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\treturn Array.from(tokens);\n}\n"]}
|