active-connect-ng2 0.2.25 → 0.2.26
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.
|
@@ -226,11 +226,10 @@ export class OutboundObject {
|
|
|
226
226
|
if (this.requestedGroupId == groupId &&
|
|
227
227
|
this.loadedGroupObservable &&
|
|
228
228
|
this.loadedGroupData) {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
}, 50);
|
|
229
|
+
setTimeout(() => {
|
|
230
|
+
if (this.loadedGroupData)
|
|
231
|
+
this.loadedGroupChanged?.next(this.loadedGroupData);
|
|
232
|
+
}, 50);
|
|
234
233
|
return this.loadedGroupObservable;
|
|
235
234
|
}
|
|
236
235
|
if (this.requestedGroupId != groupId || !this.loadedGroupObservable) {
|
|
@@ -242,7 +241,7 @@ export class OutboundObject {
|
|
|
242
241
|
if (!this.requested && this.lazyLoaded) {
|
|
243
242
|
this.load().then();
|
|
244
243
|
}
|
|
245
|
-
if (this.loadedGroupId == groupId) {
|
|
244
|
+
if (this.loadedGroupId == groupId && this.loadedGroupData) {
|
|
246
245
|
this.loadedGroupChanged?.next(this.loadedGroupData);
|
|
247
246
|
}
|
|
248
247
|
else {
|
|
@@ -333,9 +332,9 @@ export class OutboundObject {
|
|
|
333
332
|
}
|
|
334
333
|
}
|
|
335
334
|
afterServerReconnected() {
|
|
336
|
-
if (this.requested) {
|
|
335
|
+
if (this.requested && this.lazyLoaded) {
|
|
337
336
|
this.requested = false;
|
|
338
|
-
this.load().then();
|
|
337
|
+
this.load(1).then();
|
|
339
338
|
}
|
|
340
339
|
if (this.loadedId) {
|
|
341
340
|
this.loadedIdData = null;
|
|
@@ -347,4 +346,4 @@ export class OutboundObject {
|
|
|
347
346
|
}
|
|
348
347
|
}
|
|
349
348
|
}
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym91bmQtb2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWN0aXZlLWNvbm5lY3QtbmcyL3NyYy9saWIvd2Vic29ja2V0L29iamVjdHMvb3V0Ym91bmQtb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU01QyxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNVLE1BQXVCLEVBQ3ZCLE1BQWMsRUFDZCxVQUFvQixFQUNaLE1BQWdCLEVBQ3hCLG1CQUE0QixFQUM1QixNQUErQjtRQUwvQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBVTtRQUNaLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFTO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQXlCO1FBcUxqQyxZQUFPLEdBQXNDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdkQsU0FBSSxHQUFvQixTQUFTLENBQUM7UUErRWxDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUEyQjNCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFXakIsWUFBTyxHQUF1QixTQUFTLENBQUM7UUFLeEMsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBQ2xDLHFCQUFnQixHQUF5QixJQUFJLENBQUM7UUFDOUMsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDL0IsaUJBQVksR0FBYSxJQUFJLENBQUM7UUFDOUIsb0JBQWUsR0FBdUIsSUFBSSxDQUFDO1FBTzNDLHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFDdkMsMEJBQXFCLEdBQTJCLElBQUksQ0FBQztRQUNyRCxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDcEMs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QztZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFdlYnNvY2tldENsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElkT2JqZWN0IHtcclxuICBpZDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE91dGJvdW5kT2JqZWN0PFQgZXh0ZW5kcyBJZE9iamVjdD4ge1xyXG4gIHByaXZhdGUgcHJldmlvdXNseUNhY2hlZENvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNsaWVudDogV2Vic29ja2V0Q2xpZW50LFxyXG4gICAgcHJpdmF0ZSBtZXRob2Q6IHN0cmluZyxcclxuICAgIHByaXZhdGUgbGF6eUxvYWRlZD86IGJvb2xlYW4sXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2FjaGVkPzogYm9vbGVhbixcclxuICAgIHByaXZhdGUgaW5pdGlhbExvYWRpbmdDb3VudD86IG51bWJlcixcclxuICAgIHByaXZhdGUgc29ydEJ5PzogKGE6IFQsIGI6IFQpID0+IG51bWJlclxyXG4gICkge1xyXG4gICAgdGhpcy50YXJnZXQubG9hZGluZyA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xyXG5cclxuICAgIGlmICh0aGlzLmNsaWVudC5kYlNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5jbGllbnQuZGJTZXJ2aWNlXHJcbiAgICAgICAgLmdldEJ5S2V5KCdvdXRib3VuZCcsIG1ldGhvZClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzbHlDYWNoZWRDb3VudCA9IHJlc3VsdC5kYXRhPy5sZW5ndGggfHwgbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBXZWJzb2NrZXRDbGllbnQuZXhwZWN0T3V0Ym91bmQoXHJcbiAgICAgIG1ldGhvZCxcclxuICAgICAgZnVuY3Rpb24gc2V0T3V0Ym91bmQoXHJcbiAgICAgICAgZGF0YTogYW55LFxyXG4gICAgICAgIHNwZWNpZmljSGFzaDogbnVtYmVyIHwgbnVsbCxcclxuICAgICAgICBpbnNlcnRlZE9yR3JvdXBEYXRhOiBhbnlbXSB8IG51bGwsXHJcbiAgICAgICAgdXBkYXRlZE9yR3JvdXBJZDogYW55W10gfCBudWxsLFxyXG4gICAgICAgIGRlbGV0ZWQ6IGFueVtdIHwgbnVsbCxcclxuICAgICAgICBsZW5ndGg6IG51bWJlciB8IG51bGwsXHJcbiAgICAgICAgX2NsaWVudDogV2Vic29ja2V0Q2xpZW50XHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmICghY2FjaGVkKSB7XHJcbiAgICAgICAgICBpZiAoX2NsaWVudC5kYlNlcnZpY2UpXHJcbiAgICAgICAgICAgIF9jbGllbnQuZGJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLmRlbGV0ZUJ5S2V5KCdvdXRib3VuZCcsIG1ldGhvZClcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRhID09ICdjYWNoZV9yZXN0b3JlJykge1xyXG4gICAgICAgICAgaWYgKF9jbGllbnQuZGJTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIF9jbGllbnQuZGJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLmdldEJ5S2V5KCdvdXRib3VuZCcsIG1ldGhvZClcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuc2V0RGF0YShyZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCkgX3RoaXMuX2xlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAgICdBY3RpdmUgLSBDb25uZWN0OiBDYWNoaW5nIC8gcmVzdG9yZSBub3QgcG9zc2libGUgYXMgdGhlIGluZGV4ZWREQiBpcyBub3QgYWNjZXNzaWJsZSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEgPT0gJ2NhY2hlX2RlbGV0ZScpIHtcclxuICAgICAgICAgIGlmIChfY2xpZW50LmRiU2VydmljZSkge1xyXG4gICAgICAgICAgICBfY2xpZW50LmRiU2VydmljZVxyXG4gICAgICAgICAgICAgIC5kZWxldGVCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAgICdBY3RpdmUgLSBDb25uZWN0OiBDYWNoaW5nIC8gcmVzdG9yZSBub3QgcG9zc2libGUgYXMgdGhlIGluZGV4ZWREQiBpcyBub3QgYWNjZXNzaWJsZSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIF90aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIF90aGlzLnJlcXVlc3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSAnZGF0YV9kZWxldGUnKSB7XHJcbiAgICAgICAgICBfdGhpcy5kYXRhID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgX3RoaXMuZGF0YU1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgIF90aGlzLnJlcXVlc3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgX3RoaXMubG9hZGVkR3JvdXBEYXRhID0gbnVsbDtcclxuICAgICAgICAgIF90aGlzLmxvYWRlZEdyb3VwSWQgPSBudWxsO1xyXG4gICAgICAgICAgX3RoaXMuX2xlbmd0aCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIF90aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEgPT0gJ2RhdGFfZ3JvdXAnKSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIF90aGlzLnJlcXVlc3RlZEdyb3VwSWQgPT1cclxuICAgICAgICAgICAgKHVwZGF0ZWRPckdyb3VwSWQgPyB1cGRhdGVkT3JHcm91cElkWzBdIDogMClcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBfdGhpcy5sb2FkZWRHcm91cERhdGEgPSBpbnNlcnRlZE9yR3JvdXBEYXRhO1xyXG4gICAgICAgICAgICBfdGhpcy5sb2FkZWRHcm91cElkID0gdXBkYXRlZE9yR3JvdXBJZCA/IHVwZGF0ZWRPckdyb3VwSWRbMF0gOiAwO1xyXG4gICAgICAgICAgICBfdGhpcy5sb2FkZWRHcm91cENoYW5nZWQ/Lm5leHQoaW5zZXJ0ZWRPckdyb3VwRGF0YSBhcyBUW10pO1xyXG4gICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhID09ICdkYXRhX2lkJykge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBfdGhpcy5yZXF1ZXN0ZWRJZCA9PSAodXBkYXRlZE9yR3JvdXBJZCA/IHVwZGF0ZWRPckdyb3VwSWRbMF0gOiAwKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIF90aGlzLmxvYWRlZElkRGF0YSA9XHJcbiAgICAgICAgICAgICAgKGluc2VydGVkT3JHcm91cERhdGE/Lmxlbmd0aCB8fCAwKSA+IDBcclxuICAgICAgICAgICAgICAgID8gKGluc2VydGVkT3JHcm91cERhdGEgYXMgYW55W10pWzBdXHJcbiAgICAgICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgICAgIF90aGlzLmxvYWRlZElkID0gdXBkYXRlZE9yR3JvdXBJZCA/IHVwZGF0ZWRPckdyb3VwSWRbMF0gOiAwO1xyXG4gICAgICAgICAgICBfdGhpcy5sb2FkZWRJZENoYW5nZWQ/Lm5leHQoX3RoaXMubG9hZGVkSWREYXRhIGFzIFQpO1xyXG4gICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhID09ICdkYXRhX2RpZmYnKSB7XHJcbiAgICAgICAgICBpbnNlcnRlZE9yR3JvdXBEYXRhPy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLmRhdGFNYXAuc2V0KGUuaWQsIGUpO1xyXG4gICAgICAgICAgICBpZiAoZS5pZCA9PSBfdGhpcy5sb2FkZWRJZCkge1xyXG4gICAgICAgICAgICAgIF90aGlzLmxvYWRlZElkQ2hhbmdlZD8ubmV4dChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB1cGRhdGVkT3JHcm91cElkPy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLmRhdGFNYXAuc2V0KGUuaWQsIGUpO1xyXG4gICAgICAgICAgICBpZiAoZS5pZCA9PSBfdGhpcy5sb2FkZWRJZCkge1xyXG4gICAgICAgICAgICAgIF90aGlzLmxvYWRlZElkQ2hhbmdlZD8ubmV4dChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBkZWxldGVkPy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLmRhdGFNYXAuZGVsZXRlKGUuaWQpO1xyXG4gICAgICAgICAgICBpZiAoZS5pZCA9PSBfdGhpcy5sb2FkZWRJZCkge1xyXG4gICAgICAgICAgICAgIF90aGlzLmxvYWRlZElkQ2hhbmdlZD8ubmV4dChudWxsIGFzIGFueSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgX3RoaXMuZGF0YSA9IEFycmF5LmZyb20oX3RoaXMuZGF0YU1hcC52YWx1ZXMoKSk7XHJcbiAgICAgICAgICBpZiAoX3RoaXMuZGF0YSAmJiBfdGhpcy5zb3J0QnkpXHJcbiAgICAgICAgICAgIF90aGlzLmRhdGEgPSBfdGhpcy5kYXRhLnNvcnQoX3RoaXMuc29ydEJ5KTtcclxuICAgICAgICAgIF90aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICBpZiAoY2FjaGVkICYmIHNwZWNpZmljSGFzaCkge1xyXG4gICAgICAgICAgICBpZiAoX2NsaWVudC5kYlNlcnZpY2UpIHtcclxuICAgICAgICAgICAgICBpZiAoX3RoaXMuZGF0YSAmJiBfdGhpcy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBfY2xpZW50LmRiU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAudXBkYXRlKCdvdXRib3VuZCcsIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2QsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogX3RoaXMuZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0hhc2gsXHJcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgX2NsaWVudC5kYlNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgLmRlbGV0ZUJ5S2V5KCdvdXRib3VuZCcsIG1ldGhvZClcclxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnQWN0aXZlLUNvbm5lY3Q6IENhY2hpbmcgbm90IHBvc3NpYmxlIGFzIHRoZSBpbmRleGVkREIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgX3RoaXMuc2V0RGF0YShkYXRhKTtcclxuICAgICAgICAgIGlmIChfdGhpcy5sb2FkZWRJZCkge1xyXG4gICAgICAgICAgICBjb25zdCBsb2FkZWRWYWx1ZSA9IF90aGlzLmRhdGFNYXAuZ2V0KF90aGlzLmxvYWRlZElkKTtcclxuICAgICAgICAgICAgaWYgKGxvYWRlZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMubG9hZGVkSWREYXRhID0gbG9hZGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgX3RoaXMubG9hZGVkSWRDaGFuZ2VkPy5uZXh0KF90aGlzLmxvYWRlZElkRGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIF90aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChjYWNoZWQgJiYgc3BlY2lmaWNIYXNoKSB7XHJcbiAgICAgICAgICAgIGlmIChfY2xpZW50LmRiU2VydmljZSkge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIF9jbGllbnQuZGJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgIC51cGRhdGUoJ291dGJvdW5kJywge1xyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljSGFzaCxcclxuICAgICAgICAgICAgICAgICAgICBsZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge30pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfY2xpZW50LmRiU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAuZGVsZXRlQnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKVxyXG4gICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICdBY3RpdmUtQ29ubmVjdDogQ2FjaGluZyBub3QgcG9zc2libGUgYXMgdGhlIGluZGV4ZWREQiBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGVuZ3RoKSBfdGhpcy5fbGVuZ3RoID0gbGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIFdlYnNvY2tldENsaWVudC5hZGRSZXNldFJlcXVlc3RpbmdTdGF0ZUNhbGxiYWNrKCgpID0+IHtcclxuICAgICAgdGhpcy5hZnRlclNlcnZlclJlY29ubmVjdGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCB0YXJnZXQoKTogYW55IHtcclxuICAgIHJldHVybiAodGhpcy5jbGllbnQgYXMgYW55KS5fX3Byb3RvX187XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRhdGFNYXA6IE1hcDxudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBUPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIGRhdGE6IFRbXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIGdldChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICBpZiAodGhpcy5yZXF1ZXN0ZWRJZCA9PSBpZCAmJiB0aGlzLmxvYWRlZE9ic2VydmFibGUgJiYgdGhpcy5sb2FkZWRJZERhdGEpIHtcclxuICAgICAgaWYgKHRoaXMubG9hZGVkSWREYXRhKVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMubG9hZGVkSWREYXRhKSB0aGlzLmxvYWRlZElkQ2hhbmdlZD8ubmV4dCh0aGlzLmxvYWRlZElkRGF0YSk7XHJcbiAgICAgICAgfSwgNTApO1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWRPYnNlcnZhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlcXVlc3RlZElkICE9IGlkIHx8ICF0aGlzLmxvYWRlZE9ic2VydmFibGUpIHtcclxuICAgICAgdGhpcy5sb2FkZWRPYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8VD4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkZWRJZENoYW5nZWQgPSBvYnNlcnZlcjtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucmVxdWVzdGVkICYmIHRoaXMubGF6eUxvYWRlZCkge1xyXG4gICAgICAgIHRoaXMubG9hZCgpLnRoZW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5kYXRhTWFwLmdldChpZCk7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZWRJZENoYW5nZWQ/Lm5leHQocmVzKTtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubG9hZGVkSWQgPT0gaWQpIHtcclxuICAgICAgICB0aGlzLmxvYWRlZElkQ2hhbmdlZD8ubmV4dCh0aGlzLmxvYWRlZElkRGF0YSBhcyBUKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlcXVlc3RCeUlkKGlkKTtcclxuICAgICAgfVxyXG4gICAgICByZXNvbHZlKCk7XHJcbiAgICB9KS50aGVuKCk7XHJcbiAgICByZXR1cm4gdGhpcy5sb2FkZWRPYnNlcnZhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZvckdyb3VwKGdyb3VwSWQ6IG51bWJlcik6IE9ic2VydmFibGU8VFtdPiB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVxdWVzdGVkR3JvdXBJZCA9PSBncm91cElkICYmXHJcbiAgICAgIHRoaXMubG9hZGVkR3JvdXBPYnNlcnZhYmxlICYmXHJcbiAgICAgIHRoaXMubG9hZGVkR3JvdXBEYXRhXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMubG9hZGVkR3JvdXBEYXRhKVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMubG9hZGVkR3JvdXBEYXRhKVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRlZEdyb3VwQ2hhbmdlZD8ubmV4dCh0aGlzLmxvYWRlZEdyb3VwRGF0YSk7XHJcbiAgICAgICAgfSwgNTApO1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWRHcm91cE9ic2VydmFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVxdWVzdGVkR3JvdXBJZCAhPSBncm91cElkIHx8ICF0aGlzLmxvYWRlZEdyb3VwT2JzZXJ2YWJsZSkge1xyXG4gICAgICB0aGlzLmxvYWRlZEdyb3VwT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPFRbXT4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkZWRHcm91cENoYW5nZWQgPSBvYnNlcnZlcjtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucmVxdWVzdGVkICYmIHRoaXMubGF6eUxvYWRlZCkge1xyXG4gICAgICAgIHRoaXMubG9hZCgpLnRoZW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5sb2FkZWRHcm91cElkID09IGdyb3VwSWQpIHtcclxuICAgICAgICB0aGlzLmxvYWRlZEdyb3VwQ2hhbmdlZD8ubmV4dCh0aGlzLmxvYWRlZEdyb3VwRGF0YSBhcyBUW10pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdEZvckdyb3VwKGdyb3VwSWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH0pLnRoZW4oKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5sb2FkZWRHcm91cE9ic2VydmFibGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFsbCgpOiBUW10gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCF0aGlzLnJlcXVlc3RlZCAmJiB0aGlzLmxhenlMb2FkZWQpIHtcclxuICAgICAgdGhpcy5sb2FkKCkudGhlbigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVxdWVzdGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGFzeW5jIGxvYWQoY291bnQ/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmxhenlMb2FkZWQpIHtcclxuICAgICAgY29uc3QgaGFzQmVlblJlcXVlc3RlZEJlZm9yZSA9IHRoaXMucmVxdWVzdGVkO1xyXG4gICAgICB0aGlzLl9sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgaWYgKCF0aGlzLnJlcXVlc3RlZCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZXF1ZXN0ZWQgPSB0cnVlO1xyXG4gICAgICBhd2FpdCB0aGlzLmNsaWVudC5zZW5kKCdyZXF1ZXN0LicgKyB0aGlzLm1ldGhvZCwge1xyXG4gICAgICAgIGNvdW50OiBoYXNCZWVuUmVxdWVzdGVkQmVmb3JlXHJcbiAgICAgICAgICA/IHRoaXMuZGF0YVxyXG4gICAgICAgICAgICA/IGNvdW50IHx8IHRoaXMuaW5pdGlhbExvYWRpbmdDb3VudFxyXG4gICAgICAgICAgICAgID8gKGNvdW50IHx8ICh0aGlzLmluaXRpYWxMb2FkaW5nQ291bnQgYXMgbnVtYmVyKSkgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRMZW5ndGhcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgOiB0aGlzLnByZXZpb3VzbHlDYWNoZWRDb3VudCB8fCAodGhpcy5pbml0aWFsTG9hZGluZ0NvdW50IGFzIG51bWJlciksXHJcbiAgICAgICAgbG9hZGVkOiB0aGlzLmxvYWRlZExlbmd0aCxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBFcnJvcihcclxuICAgICAgICAnQWN0aXZlLUNvbm5lY3Q6IENhbm5vdCBydW4gbG9hZGluZyByZXF1ZXN0IGFzIHRoaXMgb3V0Ym91bmQgaXMgbm90IGxhenktbG9hZGVkLidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9sb2FkaW5nID0gdmFsdWU7XHJcbiAgICB0aGlzLnRhcmdldC5sb2FkaW5nLnNldCh0aGlzLm1ldGhvZCwgdmFsdWUpO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcclxuICB9XHJcbiAgcHVibGljIGdldCBsb2FkZWRMZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/Lmxlbmd0aCB8fCAwO1xyXG4gIH1cclxuICBwcml2YXRlIF9sZW5ndGg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZ2V0IGxlbmd0aCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xlbmd0aDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVxdWVzdGVkSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZGVkT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxUPiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZGVkSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZGVkSWREYXRhOiBUIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBsb2FkZWRJZENoYW5nZWQ6IE9ic2VydmVyPFQ+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSByZXF1ZXN0QnlJZChpZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnJlcXVlc3RlZElkID0gaWQ7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuc2VuZCgncmVxdWVzdC4nICsgdGhpcy5tZXRob2QsIHsgaWQgfSkgYXMgUHJvbWlzZTxhbnk+O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1ZXN0ZWRHcm91cElkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGxvYWRlZEdyb3VwT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxUW10+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBsb2FkZWRHcm91cElkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGxvYWRlZEdyb3VwRGF0YTogVFtdIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBsb2FkZWRHcm91cENoYW5nZWQ6IE9ic2VydmVyPFRbXT4gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHJlcXVlc3RGb3JHcm91cChncm91cElkOiBudW1iZXIpOiBQcm9taXNlPFRbXT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucmVxdWVzdGVkR3JvdXBJZCA9IGdyb3VwSWQ7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuc2VuZCgncmVxdWVzdC4nICsgdGhpcy5tZXRob2QsIHsgZ3JvdXBJZCB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YShkYXRhOiBUW10gfCB7IGFkZGVkOiBUW10gfCB1bmRlZmluZWQ7IGxlbmd0aDogbnVtYmVyIH0pIHtcclxuICAgIHRoaXMuZGF0YSA9IGRhdGEgYXMgVFtdO1xyXG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLnNvcnRCeSkgdGhpcy5kYXRhID0gdGhpcy5kYXRhLnNvcnQodGhpcy5zb3J0QnkpO1xyXG4gICAgdGhpcy5fbGVuZ3RoID0gZGF0YS5sZW5ndGg7XHJcbiAgICB0aGlzLmRhdGFNYXAgPSBuZXcgTWFwKCk7XHJcbiAgICB0aGlzLmRhdGEuZm9yRWFjaCgoZCkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFNYXAuc2V0KGQuaWQsIGQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNFbXB0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEgPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGNvbnRhaW5lZCBkYXRhIGNhbiBiZSBtb2RpZmllZCB3aXRoaW4gdGhlIGNhbGxiYWNrIG1ldGhvZFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGUoY2FsbGJhY2s6IChkYXRhOiBUW10pID0+IHZvaWQpIHtcclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgY29uc3QgdXBkYXRlTGVuZ3RoVmFyaWFibGUgPSB0aGlzLmRhdGEubGVuZ3RoID09IHRoaXMuX2xlbmd0aDtcclxuICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5sZW5ndGg7XHJcbiAgICAgIGNhbGxiYWNrKHRoaXMuZGF0YSk7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh0aGlzLmRhdGEpO1xyXG4gICAgICBpZiAoIXVwZGF0ZUxlbmd0aFZhcmlhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5fbGVuZ3RoID0gbGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFmdGVyU2VydmVyUmVjb25uZWN0ZWQoKSB7XHJcbiAgICBpZiAodGhpcy5yZXF1ZXN0ZWQpIHtcclxuICAgICAgdGhpcy5yZXF1ZXN0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5sb2FkKCkudGhlbigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubG9hZGVkSWQpIHtcclxuICAgICAgdGhpcy5sb2FkZWRJZERhdGEgPSBudWxsO1xyXG4gICAgICB0aGlzLmdldCh0aGlzLmxvYWRlZElkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmxvYWRlZEdyb3VwSWQpIHtcclxuICAgICAgdGhpcy5sb2FkZWRHcm91cERhdGEgPSBudWxsO1xyXG4gICAgICB0aGlzLmdldEZvckdyb3VwKHRoaXMubG9hZGVkR3JvdXBJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym91bmQtb2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWN0aXZlLWNvbm5lY3QtbmcyL3NyYy9saWIvd2Vic29ja2V0L29iamVjdHMvb3V0Ym91bmQtb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU01QyxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNVLE1BQXVCLEVBQ3ZCLE1BQWMsRUFDZCxVQUFvQixFQUNaLE1BQWdCLEVBQ3hCLG1CQUE0QixFQUM1QixNQUErQjtRQUwvQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBVTtRQUNaLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFTO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQXlCO1FBcUxqQyxZQUFPLEdBQXNDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdkQsU0FBSSxHQUFvQixTQUFTLENBQUM7UUE4RWxDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUEyQjNCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFXakIsWUFBTyxHQUF1QixTQUFTLENBQUM7UUFLeEMsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBQ2xDLHFCQUFnQixHQUF5QixJQUFJLENBQUM7UUFDOUMsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDL0IsaUJBQVksR0FBYSxJQUFJLENBQUM7UUFDOUIsb0JBQWUsR0FBdUIsSUFBSSxDQUFDO1FBTzNDLHFCQUFnQixHQUFrQixJQUFJLENBQUM7UUFDdkMsMEJBQXFCLEdBQTJCLElBQUksQ0FBQztRQUNyRCxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDcEMs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QUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBXZWJzb2NrZXRDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJZE9iamVjdCB7XHJcbiAgaWQ6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBPdXRib3VuZE9iamVjdDxUIGV4dGVuZHMgSWRPYmplY3Q+IHtcclxuICBwcml2YXRlIHByZXZpb3VzbHlDYWNoZWRDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjbGllbnQ6IFdlYnNvY2tldENsaWVudCxcclxuICAgIHByaXZhdGUgbWV0aG9kOiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIGxhenlMb2FkZWQ/OiBib29sZWFuLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNhY2hlZD86IGJvb2xlYW4sXHJcbiAgICBwcml2YXRlIGluaXRpYWxMb2FkaW5nQ291bnQ/OiBudW1iZXIsXHJcbiAgICBwcml2YXRlIHNvcnRCeT86IChhOiBULCBiOiBUKSA9PiBudW1iZXJcclxuICApIHtcclxuICAgIHRoaXMudGFyZ2V0LmxvYWRpbmcgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcclxuXHJcbiAgICBpZiAodGhpcy5jbGllbnQuZGJTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuY2xpZW50LmRiU2VydmljZVxyXG4gICAgICAgIC5nZXRCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmV2aW91c2x5Q2FjaGVkQ291bnQgPSByZXN1bHQuZGF0YT8ubGVuZ3RoIHx8IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgV2Vic29ja2V0Q2xpZW50LmV4cGVjdE91dGJvdW5kKFxyXG4gICAgICBtZXRob2QsXHJcbiAgICAgIGZ1bmN0aW9uIHNldE91dGJvdW5kKFxyXG4gICAgICAgIGRhdGE6IGFueSxcclxuICAgICAgICBzcGVjaWZpY0hhc2g6IG51bWJlciB8IG51bGwsXHJcbiAgICAgICAgaW5zZXJ0ZWRPckdyb3VwRGF0YTogYW55W10gfCBudWxsLFxyXG4gICAgICAgIHVwZGF0ZWRPckdyb3VwSWQ6IGFueVtdIHwgbnVsbCxcclxuICAgICAgICBkZWxldGVkOiBhbnlbXSB8IG51bGwsXHJcbiAgICAgICAgbGVuZ3RoOiBudW1iZXIgfCBudWxsLFxyXG4gICAgICAgIF9jbGllbnQ6IFdlYnNvY2tldENsaWVudFxyXG4gICAgICApIHtcclxuICAgICAgICBpZiAoIWNhY2hlZCkge1xyXG4gICAgICAgICAgaWYgKF9jbGllbnQuZGJTZXJ2aWNlKVxyXG4gICAgICAgICAgICBfY2xpZW50LmRiU2VydmljZVxyXG4gICAgICAgICAgICAgIC5kZWxldGVCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0YSA9PSAnY2FjaGVfcmVzdG9yZScpIHtcclxuICAgICAgICAgIGlmIChfY2xpZW50LmRiU2VydmljZSkge1xyXG4gICAgICAgICAgICBfY2xpZW50LmRiU2VydmljZVxyXG4gICAgICAgICAgICAgIC5nZXRCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIF90aGlzLnNldERhdGEocmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgpIF90aGlzLl9sZW5ndGggPSByZXN1bHQubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAnQWN0aXZlIC0gQ29ubmVjdDogQ2FjaGluZyAvIHJlc3RvcmUgbm90IHBvc3NpYmxlIGFzIHRoZSBpbmRleGVkREIgaXMgbm90IGFjY2Vzc2libGUnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhID09ICdjYWNoZV9kZWxldGUnKSB7XHJcbiAgICAgICAgICBpZiAoX2NsaWVudC5kYlNlcnZpY2UpIHtcclxuICAgICAgICAgICAgX2NsaWVudC5kYlNlcnZpY2VcclxuICAgICAgICAgICAgICAuZGVsZXRlQnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge30pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAnQWN0aXZlIC0gQ29ubmVjdDogQ2FjaGluZyAvIHJlc3RvcmUgbm90IHBvc3NpYmxlIGFzIHRoZSBpbmRleGVkREIgaXMgbm90IGFjY2Vzc2libGUnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBfdGhpcy5yZXF1ZXN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEgPT0gJ2RhdGFfZGVsZXRlJykge1xyXG4gICAgICAgICAgX3RoaXMuZGF0YSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIF90aGlzLmRhdGFNYXAgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICBfdGhpcy5yZXF1ZXN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIF90aGlzLmxvYWRlZEdyb3VwRGF0YSA9IG51bGw7XHJcbiAgICAgICAgICBfdGhpcy5sb2FkZWRHcm91cElkID0gbnVsbDtcclxuICAgICAgICAgIF90aGlzLl9sZW5ndGggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhID09ICdkYXRhX2dyb3VwJykge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBfdGhpcy5yZXF1ZXN0ZWRHcm91cElkID09XHJcbiAgICAgICAgICAgICh1cGRhdGVkT3JHcm91cElkID8gdXBkYXRlZE9yR3JvdXBJZFswXSA6IDApXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgX3RoaXMubG9hZGVkR3JvdXBEYXRhID0gaW5zZXJ0ZWRPckdyb3VwRGF0YTtcclxuICAgICAgICAgICAgX3RoaXMubG9hZGVkR3JvdXBJZCA9IHVwZGF0ZWRPckdyb3VwSWQgPyB1cGRhdGVkT3JHcm91cElkWzBdIDogMDtcclxuICAgICAgICAgICAgX3RoaXMubG9hZGVkR3JvdXBDaGFuZ2VkPy5uZXh0KGluc2VydGVkT3JHcm91cERhdGEgYXMgVFtdKTtcclxuICAgICAgICAgICAgX3RoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSAnZGF0YV9pZCcpIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgX3RoaXMucmVxdWVzdGVkSWQgPT0gKHVwZGF0ZWRPckdyb3VwSWQgPyB1cGRhdGVkT3JHcm91cElkWzBdIDogMClcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBfdGhpcy5sb2FkZWRJZERhdGEgPVxyXG4gICAgICAgICAgICAgIChpbnNlcnRlZE9yR3JvdXBEYXRhPy5sZW5ndGggfHwgMCkgPiAwXHJcbiAgICAgICAgICAgICAgICA/IChpbnNlcnRlZE9yR3JvdXBEYXRhIGFzIGFueVtdKVswXVxyXG4gICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgICBfdGhpcy5sb2FkZWRJZCA9IHVwZGF0ZWRPckdyb3VwSWQgPyB1cGRhdGVkT3JHcm91cElkWzBdIDogMDtcclxuICAgICAgICAgICAgX3RoaXMubG9hZGVkSWRDaGFuZ2VkPy5uZXh0KF90aGlzLmxvYWRlZElkRGF0YSBhcyBUKTtcclxuICAgICAgICAgICAgX3RoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSAnZGF0YV9kaWZmJykge1xyXG4gICAgICAgICAgaW5zZXJ0ZWRPckdyb3VwRGF0YT8uZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICBfdGhpcy5kYXRhTWFwLnNldChlLmlkLCBlKTtcclxuICAgICAgICAgICAgaWYgKGUuaWQgPT0gX3RoaXMubG9hZGVkSWQpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5sb2FkZWRJZENoYW5nZWQ/Lm5leHQoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdXBkYXRlZE9yR3JvdXBJZD8uZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICBfdGhpcy5kYXRhTWFwLnNldChlLmlkLCBlKTtcclxuICAgICAgICAgICAgaWYgKGUuaWQgPT0gX3RoaXMubG9hZGVkSWQpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5sb2FkZWRJZENoYW5nZWQ/Lm5leHQoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZGVsZXRlZD8uZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICBfdGhpcy5kYXRhTWFwLmRlbGV0ZShlLmlkKTtcclxuICAgICAgICAgICAgaWYgKGUuaWQgPT0gX3RoaXMubG9hZGVkSWQpIHtcclxuICAgICAgICAgICAgICBfdGhpcy5sb2FkZWRJZENoYW5nZWQ/Lm5leHQobnVsbCBhcyBhbnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIF90aGlzLmRhdGEgPSBBcnJheS5mcm9tKF90aGlzLmRhdGFNYXAudmFsdWVzKCkpO1xyXG4gICAgICAgICAgaWYgKF90aGlzLmRhdGEgJiYgX3RoaXMuc29ydEJ5KVxyXG4gICAgICAgICAgICBfdGhpcy5kYXRhID0gX3RoaXMuZGF0YS5zb3J0KF90aGlzLnNvcnRCeSk7XHJcbiAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKGNhY2hlZCAmJiBzcGVjaWZpY0hhc2gpIHtcclxuICAgICAgICAgICAgaWYgKF9jbGllbnQuZGJTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKF90aGlzLmRhdGEgJiYgX3RoaXMuZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgX2NsaWVudC5kYlNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgLnVwZGF0ZSgnb3V0Ym91bmQnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IF90aGlzLmRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNIYXNoLFxyXG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIF9jbGllbnQuZGJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgIC5kZWxldGVCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpXHJcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge30pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgJ0FjdGl2ZS1Db25uZWN0OiBDYWNoaW5nIG5vdCBwb3NzaWJsZSBhcyB0aGUgaW5kZXhlZERCIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIF90aGlzLnNldERhdGEoZGF0YSk7XHJcbiAgICAgICAgICBpZiAoX3RoaXMubG9hZGVkSWQpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9hZGVkVmFsdWUgPSBfdGhpcy5kYXRhTWFwLmdldChfdGhpcy5sb2FkZWRJZCk7XHJcbiAgICAgICAgICAgIGlmIChsb2FkZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIF90aGlzLmxvYWRlZElkRGF0YSA9IGxvYWRlZFZhbHVlO1xyXG4gICAgICAgICAgICAgIF90aGlzLmxvYWRlZElkQ2hhbmdlZD8ubmV4dChfdGhpcy5sb2FkZWRJZERhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoY2FjaGVkICYmIHNwZWNpZmljSGFzaCkge1xyXG4gICAgICAgICAgICBpZiAoX2NsaWVudC5kYlNlcnZpY2UpIHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBfY2xpZW50LmRiU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAudXBkYXRlKCdvdXRib3VuZCcsIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2QsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0hhc2gsXHJcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgX2NsaWVudC5kYlNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgLmRlbGV0ZUJ5S2V5KCdvdXRib3VuZCcsIG1ldGhvZClcclxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnQWN0aXZlLUNvbm5lY3Q6IENhY2hpbmcgbm90IHBvc3NpYmxlIGFzIHRoZSBpbmRleGVkREIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxlbmd0aCkgX3RoaXMuX2xlbmd0aCA9IGxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBXZWJzb2NrZXRDbGllbnQuYWRkUmVzZXRSZXF1ZXN0aW5nU3RhdGVDYWxsYmFjaygoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWZ0ZXJTZXJ2ZXJSZWNvbm5lY3RlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdGFyZ2V0KCk6IGFueSB7XHJcbiAgICByZXR1cm4gKHRoaXMuY2xpZW50IGFzIGFueSkuX19wcm90b19fO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkYXRhTWFwOiBNYXA8bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgVD4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBkYXRhOiBUW10gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBnZXQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgaWYgKHRoaXMucmVxdWVzdGVkSWQgPT0gaWQgJiYgdGhpcy5sb2FkZWRPYnNlcnZhYmxlICYmIHRoaXMubG9hZGVkSWREYXRhKSB7XHJcbiAgICAgIGlmICh0aGlzLmxvYWRlZElkRGF0YSlcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmxvYWRlZElkRGF0YSkgdGhpcy5sb2FkZWRJZENoYW5nZWQ/Lm5leHQodGhpcy5sb2FkZWRJZERhdGEpO1xyXG4gICAgICAgIH0sIDUwKTtcclxuICAgICAgcmV0dXJuIHRoaXMubG9hZGVkT2JzZXJ2YWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXF1ZXN0ZWRJZCAhPSBpZCB8fCAhdGhpcy5sb2FkZWRPYnNlcnZhYmxlKSB7XHJcbiAgICAgIHRoaXMubG9hZGVkT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPFQ+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGVkSWRDaGFuZ2VkID0gb2JzZXJ2ZXI7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnJlcXVlc3RlZCAmJiB0aGlzLmxhenlMb2FkZWQpIHtcclxuICAgICAgICB0aGlzLmxvYWQoKS50aGVuKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZGF0YU1hcC5nZXQoaWQpO1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMubG9hZGVkSWRDaGFuZ2VkPy5uZXh0KHJlcyk7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmxvYWRlZElkID09IGlkKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkZWRJZENoYW5nZWQ/Lm5leHQodGhpcy5sb2FkZWRJZERhdGEgYXMgVCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5yZXF1ZXN0QnlJZChpZCk7XHJcbiAgICAgIH1cclxuICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgfSkudGhlbigpO1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGVkT2JzZXJ2YWJsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGb3JHcm91cChncm91cElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFRbXT4ge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlcXVlc3RlZEdyb3VwSWQgPT0gZ3JvdXBJZCAmJlxyXG4gICAgICB0aGlzLmxvYWRlZEdyb3VwT2JzZXJ2YWJsZSAmJlxyXG4gICAgICB0aGlzLmxvYWRlZEdyb3VwRGF0YVxyXG4gICAgKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWRlZEdyb3VwRGF0YSlcclxuICAgICAgICAgIHRoaXMubG9hZGVkR3JvdXBDaGFuZ2VkPy5uZXh0KHRoaXMubG9hZGVkR3JvdXBEYXRhKTtcclxuICAgICAgfSwgNTApO1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWRHcm91cE9ic2VydmFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVxdWVzdGVkR3JvdXBJZCAhPSBncm91cElkIHx8ICF0aGlzLmxvYWRlZEdyb3VwT2JzZXJ2YWJsZSkge1xyXG4gICAgICB0aGlzLmxvYWRlZEdyb3VwT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPFRbXT4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkZWRHcm91cENoYW5nZWQgPSBvYnNlcnZlcjtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucmVxdWVzdGVkICYmIHRoaXMubGF6eUxvYWRlZCkge1xyXG4gICAgICAgIHRoaXMubG9hZCgpLnRoZW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5sb2FkZWRHcm91cElkID09IGdyb3VwSWQgJiYgdGhpcy5sb2FkZWRHcm91cERhdGEpIHtcclxuICAgICAgICB0aGlzLmxvYWRlZEdyb3VwQ2hhbmdlZD8ubmV4dCh0aGlzLmxvYWRlZEdyb3VwRGF0YSBhcyBUW10pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdEZvckdyb3VwKGdyb3VwSWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH0pLnRoZW4oKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5sb2FkZWRHcm91cE9ic2VydmFibGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFsbCgpOiBUW10gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCF0aGlzLnJlcXVlc3RlZCAmJiB0aGlzLmxhenlMb2FkZWQpIHtcclxuICAgICAgdGhpcy5sb2FkKCkudGhlbigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVxdWVzdGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGFzeW5jIGxvYWQoY291bnQ/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmxhenlMb2FkZWQpIHtcclxuICAgICAgY29uc3QgaGFzQmVlblJlcXVlc3RlZEJlZm9yZSA9IHRoaXMucmVxdWVzdGVkO1xyXG4gICAgICB0aGlzLl9sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgaWYgKCF0aGlzLnJlcXVlc3RlZCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZXF1ZXN0ZWQgPSB0cnVlO1xyXG4gICAgICBhd2FpdCB0aGlzLmNsaWVudC5zZW5kKCdyZXF1ZXN0LicgKyB0aGlzLm1ldGhvZCwge1xyXG4gICAgICAgIGNvdW50OiBoYXNCZWVuUmVxdWVzdGVkQmVmb3JlXHJcbiAgICAgICAgICA/IHRoaXMuZGF0YVxyXG4gICAgICAgICAgICA/IGNvdW50IHx8IHRoaXMuaW5pdGlhbExvYWRpbmdDb3VudFxyXG4gICAgICAgICAgICAgID8gKGNvdW50IHx8ICh0aGlzLmluaXRpYWxMb2FkaW5nQ291bnQgYXMgbnVtYmVyKSkgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRMZW5ndGhcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgOiB0aGlzLnByZXZpb3VzbHlDYWNoZWRDb3VudCB8fCAodGhpcy5pbml0aWFsTG9hZGluZ0NvdW50IGFzIG51bWJlciksXHJcbiAgICAgICAgbG9hZGVkOiB0aGlzLmxvYWRlZExlbmd0aCxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBFcnJvcihcclxuICAgICAgICAnQWN0aXZlLUNvbm5lY3Q6IENhbm5vdCBydW4gbG9hZGluZyByZXF1ZXN0IGFzIHRoaXMgb3V0Ym91bmQgaXMgbm90IGxhenktbG9hZGVkLidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9sb2FkaW5nID0gdmFsdWU7XHJcbiAgICB0aGlzLnRhcmdldC5sb2FkaW5nLnNldCh0aGlzLm1ldGhvZCwgdmFsdWUpO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcclxuICB9XHJcbiAgcHVibGljIGdldCBsb2FkZWRMZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/Lmxlbmd0aCB8fCAwO1xyXG4gIH1cclxuICBwcml2YXRlIF9sZW5ndGg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZ2V0IGxlbmd0aCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xlbmd0aDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVxdWVzdGVkSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZGVkT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxUPiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZGVkSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZGVkSWREYXRhOiBUIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBsb2FkZWRJZENoYW5nZWQ6IE9ic2VydmVyPFQ+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSByZXF1ZXN0QnlJZChpZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnJlcXVlc3RlZElkID0gaWQ7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuc2VuZCgncmVxdWVzdC4nICsgdGhpcy5tZXRob2QsIHsgaWQgfSkgYXMgUHJvbWlzZTxhbnk+O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1ZXN0ZWRHcm91cElkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGxvYWRlZEdyb3VwT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxUW10+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBsb2FkZWRHcm91cElkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGxvYWRlZEdyb3VwRGF0YTogVFtdIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBsb2FkZWRHcm91cENoYW5nZWQ6IE9ic2VydmVyPFRbXT4gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHJlcXVlc3RGb3JHcm91cChncm91cElkOiBudW1iZXIpOiBQcm9taXNlPFRbXT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucmVxdWVzdGVkR3JvdXBJZCA9IGdyb3VwSWQ7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuc2VuZCgncmVxdWVzdC4nICsgdGhpcy5tZXRob2QsIHsgZ3JvdXBJZCB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YShkYXRhOiBUW10gfCB7IGFkZGVkOiBUW10gfCB1bmRlZmluZWQ7IGxlbmd0aDogbnVtYmVyIH0pIHtcclxuICAgIHRoaXMuZGF0YSA9IGRhdGEgYXMgVFtdO1xyXG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLnNvcnRCeSkgdGhpcy5kYXRhID0gdGhpcy5kYXRhLnNvcnQodGhpcy5zb3J0QnkpO1xyXG4gICAgdGhpcy5fbGVuZ3RoID0gZGF0YS5sZW5ndGg7XHJcbiAgICB0aGlzLmRhdGFNYXAgPSBuZXcgTWFwKCk7XHJcbiAgICB0aGlzLmRhdGEuZm9yRWFjaCgoZCkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFNYXAuc2V0KGQuaWQsIGQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNFbXB0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEgPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGNvbnRhaW5lZCBkYXRhIGNhbiBiZSBtb2RpZmllZCB3aXRoaW4gdGhlIGNhbGxiYWNrIG1ldGhvZFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGUoY2FsbGJhY2s6IChkYXRhOiBUW10pID0+IHZvaWQpIHtcclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgY29uc3QgdXBkYXRlTGVuZ3RoVmFyaWFibGUgPSB0aGlzLmRhdGEubGVuZ3RoID09IHRoaXMuX2xlbmd0aDtcclxuICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5sZW5ndGg7XHJcbiAgICAgIGNhbGxiYWNrKHRoaXMuZGF0YSk7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh0aGlzLmRhdGEpO1xyXG4gICAgICBpZiAoIXVwZGF0ZUxlbmd0aFZhcmlhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5fbGVuZ3RoID0gbGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFmdGVyU2VydmVyUmVjb25uZWN0ZWQoKSB7XHJcbiAgICBpZiAodGhpcy5yZXF1ZXN0ZWQgJiYgdGhpcy5sYXp5TG9hZGVkKSB7XHJcbiAgICAgIHRoaXMucmVxdWVzdGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubG9hZCgxKS50aGVuKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5sb2FkZWRJZCkge1xyXG4gICAgICB0aGlzLmxvYWRlZElkRGF0YSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ2V0KHRoaXMubG9hZGVkSWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubG9hZGVkR3JvdXBJZCkge1xyXG4gICAgICB0aGlzLmxvYWRlZEdyb3VwRGF0YSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ2V0Rm9yR3JvdXAodGhpcy5sb2FkZWRHcm91cElkKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -878,12 +878,11 @@ class OutboundObject {
|
|
|
878
878
|
if (this.requestedGroupId == groupId &&
|
|
879
879
|
this.loadedGroupObservable &&
|
|
880
880
|
this.loadedGroupData) {
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
}, 50);
|
|
881
|
+
setTimeout(() => {
|
|
882
|
+
var _a;
|
|
883
|
+
if (this.loadedGroupData)
|
|
884
|
+
(_a = this.loadedGroupChanged) === null || _a === void 0 ? void 0 : _a.next(this.loadedGroupData);
|
|
885
|
+
}, 50);
|
|
887
886
|
return this.loadedGroupObservable;
|
|
888
887
|
}
|
|
889
888
|
if (this.requestedGroupId != groupId || !this.loadedGroupObservable) {
|
|
@@ -896,7 +895,7 @@ class OutboundObject {
|
|
|
896
895
|
if (!this.requested && this.lazyLoaded) {
|
|
897
896
|
this.load().then();
|
|
898
897
|
}
|
|
899
|
-
if (this.loadedGroupId == groupId) {
|
|
898
|
+
if (this.loadedGroupId == groupId && this.loadedGroupData) {
|
|
900
899
|
(_a = this.loadedGroupChanged) === null || _a === void 0 ? void 0 : _a.next(this.loadedGroupData);
|
|
901
900
|
}
|
|
902
901
|
else {
|
|
@@ -990,9 +989,9 @@ class OutboundObject {
|
|
|
990
989
|
}
|
|
991
990
|
}
|
|
992
991
|
afterServerReconnected() {
|
|
993
|
-
if (this.requested) {
|
|
992
|
+
if (this.requested && this.lazyLoaded) {
|
|
994
993
|
this.requested = false;
|
|
995
|
-
this.load().then();
|
|
994
|
+
this.load(1).then();
|
|
996
995
|
}
|
|
997
996
|
if (this.loadedId) {
|
|
998
997
|
this.loadedIdData = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-connect-ng2.mjs","sources":["../../../projects/active-connect-ng2/src/lib/active-connect-ng2.module.ts","../../../projects/active-connect-ng2/src/lib/websocket/json/json-parser.ts","../../../projects/active-connect-ng2/src/lib/websocket/client.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/function.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/handle.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/on-success.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/outbound.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/route.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/shared.ts","../../../projects/active-connect-ng2/src/lib/websocket/lifecycle/loading-status.ts","../../../projects/active-connect-ng2/src/lib/websocket/objects/outbound-object.ts","../../../projects/active-connect-ng2/src/public-api.ts","../../../projects/active-connect-ng2/src/active-connect-ng2.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NgxIndexedDBModule, DBConfig } from 'ngx-indexed-db';\n\nconst dbConfig: DBConfig = {\n name: 'activeconnect_cache',\n version: 1,\n objectStoresMeta: [\n {\n store: 'outbound',\n storeConfig: { keyPath: 'method', autoIncrement: false },\n storeSchema: [\n { name: 'method', keypath: 'method', options: { unique: true } },\n { name: 'data', keypath: 'data', options: { unique: false } },\n {\n name: 'specificHash',\n keypath: 'specificHash',\n options: { unique: false },\n },\n {\n name: 'length',\n keypath: 'length',\n options: { unique: false },\n },\n ],\n },\n ],\n};\n\n@NgModule({\n declarations: [],\n imports: [NgxIndexedDBModule.forRoot(dbConfig)],\n exports: [NgxIndexedDBModule],\n})\nexport class ActiveConnectNg2Module {}\n","export class JsonParser {\r\n static stringify(obj: any) {\r\n return JSON.stringify(obj);\r\n }\r\n\r\n static parsingFunction(key: any, value: any) {\r\n var a;\r\n if (typeof value === \"string\") {\r\n a =\r\n /^[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}T[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\.[0-9]{3}Z$/.exec(\r\n value\r\n );\r\n if (a) {\r\n return new Date(a as any);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n static parse(str: string) {\r\n if (str && str != \"undefined\") {\r\n return JSON.parse(str, JsonParser.parsingFunction);\r\n }\r\n return str;\r\n }\r\n}\r\n","import { NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { DecorableFunction } from './decorators/function';\r\nimport { JsonParser } from './json/json-parser';\r\n\r\nexport class WebsocketClient {\r\n ws!: WebSocket;\r\n pool!: { WssConnected: boolean } | null;\r\n\r\n constructor(\r\n private url?: string,\r\n private supportsCache?: boolean,\r\n public dbService?: NgxIndexedDBService\r\n ) {\r\n if (supportsCache) this.initCache();\r\n if (!url) {\r\n let protocol;\r\n let port;\r\n switch (document.location.protocol) {\r\n case 'https:': {\r\n protocol = 'wss:';\r\n port = ':443';\r\n break;\r\n }\r\n default: {\r\n protocol = 'ws:';\r\n port = ':80';\r\n break;\r\n }\r\n }\r\n this.url = protocol + '//' + document.location.hostname + port + '/wss';\r\n }\r\n this.connect(this.url as string);\r\n }\r\n\r\n subject: any;\r\n\r\n private connect(url: string) {\r\n if (!this.subject) {\r\n this.create(url);\r\n }\r\n return this.subject;\r\n }\r\n\r\n private requestStack: any[] = [];\r\n\r\n private _token = '';\r\n public get Token(): string {\r\n if (!this._token) {\r\n if (window.localStorage)\r\n this._token = window.localStorage.getItem('token') || '';\r\n }\r\n return this._token;\r\n }\r\n public set Token(val: string) {\r\n this._token = val;\r\n if (window.localStorage) window.localStorage.setItem('token', val);\r\n }\r\n\r\n private set Connected(value: boolean) {\r\n if (value) {\r\n this.sendBrowserInfoToServer();\r\n\r\n this.auth(this.Token).then(() => {\r\n this.resetRequestedState();\r\n this.requestStack.forEach((e) => {\r\n this.sendToSocket(e.method, e.data);\r\n this.requestStack = this.requestStack.filter((e1) => e1 != e);\r\n });\r\n });\r\n }\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = value;\r\n }\r\n private static resetRequestedStateCallbacks: Function[] = [];\r\n private connectionEstablishedOnce: boolean = false;\r\n private resetRequestedState() {\r\n if (this.connectionEstablishedOnce) {\r\n // reset requested state for outbounds\r\n WebsocketClient.resetRequestedStateCallbacks.forEach((reset) => {\r\n reset();\r\n });\r\n } else {\r\n this.connectionEstablishedOnce = true;\r\n }\r\n }\r\n public static addResetRequestingStateCallback(callback: Function) {\r\n WebsocketClient.resetRequestedStateCallbacks.push(callback);\r\n }\r\n\r\n private create(url: string) {\r\n // create new connection\r\n this.ws = new WebSocket(url + (this.supportsCache ? '?cache=true' : ''));\r\n this.ws.onerror = (err) => {\r\n this.ws.close();\r\n console.log(err);\r\n };\r\n this.ws.onopen = () => {\r\n this.Connected = true;\r\n };\r\n this.ws.onmessage = (e) => {\r\n this.messageReceived(JsonParser.parse(e.data.toString()));\r\n };\r\n this.ws.onclose = () => {\r\n if (!this.closed) {\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = false;\r\n setTimeout(() => {\r\n this.connect(url);\r\n }, 1000);\r\n }\r\n };\r\n }\r\n\r\n private messageId: number = 0;\r\n protected sendToSocket(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ) {\r\n const messageId = ++this.messageId;\r\n if (this.ws.readyState != this.ws.OPEN) {\r\n if (!dontEnsureTransmission)\r\n this.requestStack.push({ method, data, messageId });\r\n else return false;\r\n } else {\r\n this.ws.send(JsonParser.stringify({ method, value: data, messageId }));\r\n }\r\n return messageId;\r\n }\r\n\r\n async auth(token: string): Promise<any> {\r\n return this.sendToSocket('auth.token', token);\r\n }\r\n\r\n public send(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ): Promise<any> {\r\n const messageId = this.sendToSocket(\r\n method,\r\n data,\r\n dontEnsureTransmission || false\r\n );\r\n if (messageId) {\r\n return this.expectMethod(`m.${method}`, messageId);\r\n } else {\r\n return new Promise((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n private expectedMethods: Map<string | number, Array<Function>> = new Map();\r\n private expectMethod(method: string, messageId?: number | null) {\r\n return new Promise((resolve) => {\r\n if (messageId) {\r\n this.expectedMethods.set(messageId, [resolve]);\r\n } else {\r\n if (this.expectedMethods.has(method)) {\r\n let arr = this.expectedMethods.get(method);\r\n (arr as Array<Function>).push(resolve);\r\n } else {\r\n this.expectedMethods.set(method, [resolve]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private messageReceived({\r\n method,\r\n value,\r\n messageId,\r\n specificHash,\r\n inserted,\r\n updated,\r\n deleted,\r\n length,\r\n }: {\r\n method: string;\r\n value: any;\r\n messageId: number | null;\r\n specificHash: number | null;\r\n inserted: any[] | null;\r\n updated: any[] | null;\r\n deleted: any[] | null;\r\n length: number | null;\r\n }) {\r\n if (method == '___cache') {\r\n this.handleOutboundCacheRequest(value);\r\n }\r\n if (messageId) {\r\n const callback = this.expectedMethods.get(messageId);\r\n if (callback) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n this.invokeSuccessHandlers(method);\r\n } else {\r\n const callback = this.expectedMethods.get(method);\r\n if (callback && callback.length > 0) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n } else {\r\n const out = WebsocketClient.outbounds.get(method);\r\n if (out) {\r\n out(value, specificHash, inserted, updated, deleted, length, this);\r\n }\r\n const handle = WebsocketClient.handles.get(method);\r\n if (handle) {\r\n (handle.Func as Function)(value);\r\n }\r\n }\r\n }\r\n } else {\r\n throw Error(\r\n 'No MessageId was provided, the connection is not supported.'\r\n );\r\n }\r\n }\r\n\r\n private handleOutboundCacheRequest(method: string) {\r\n if (this.dbService) {\r\n this.dbService.getByKey('outbound', method).subscribe((item: any) => {\r\n if (item) {\r\n this.send('___cache', {\r\n method,\r\n specificHash: item.specificHash || null,\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n specificHash: null,\r\n });\r\n }\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n specificHash: null,\r\n });\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n\r\n private static outbounds: Map<\r\n string,\r\n (\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n > = new Map();\r\n static expectOutbound(\r\n method: string,\r\n callback: (\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n ) {\r\n WebsocketClient.outbounds.set(method, callback);\r\n }\r\n\r\n private static handles: Map<string, DecorableFunction> = new Map();\r\n static registerHandle(method: string, callback: DecorableFunction) {\r\n WebsocketClient.handles.set(method, callback);\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (this.ws) return this.ws.readyState == WebSocket.OPEN;\r\n return true;\r\n }\r\n\r\n private sendBrowserInfoToServer() {\r\n // send browser / os information\r\n const browser = this.getBrowser();\r\n const os = this.getOS();\r\n this.send('___browser', {\r\n browser: `${browser.name} ${browser.version} ${os}`,\r\n });\r\n }\r\n\r\n public getBrowser(): { name: string; version: string } {\r\n // https://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/\r\n var ua = navigator.userAgent,\r\n tem,\r\n M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE ', version: tem[1] || '' };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) {\r\n return { name: 'Opera', version: tem[1] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return {\r\n name: M[0],\r\n version: M[1],\r\n };\r\n }\r\n\r\n public getOS(): string {\r\n var userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod'],\r\n os = null;\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS';\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS';\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows';\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android';\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux';\r\n }\r\n\r\n return os || '';\r\n }\r\n\r\n private static onSuccessHandlers: {\r\n callback: DecorableFunction;\r\n regexp: RegExp;\r\n }[] = [];\r\n public static onSuccess(callback: DecorableFunction, regexp: RegExp) {\r\n this.onSuccessHandlers.push({ callback, regexp });\r\n }\r\n\r\n private invokeSuccessHandlers(method: string) {\r\n WebsocketClient.onSuccessHandlers\r\n .filter((e) => e.regexp.test(method))\r\n .forEach((e) => {\r\n var res = (e.callback.Func as Function)();\r\n if (res && res.then) {\r\n res.then();\r\n }\r\n });\r\n }\r\n\r\n public closed = false;\r\n public disconnect(restart?: boolean) {\r\n if (!restart) this.closed = true;\r\n this.ws.close();\r\n }\r\n\r\n private initCache() {}\r\n}\r\n","/**\r\n * Represents the reference to an object method used for websocket routes and outbounds.\r\n */\r\nexport class DecorableFunction {\r\n /**\r\n * Creates an instance of DecorableFunction.\r\n * @param objConfig - The configuration object for the object method.\r\n * @param objConfig.target - The target object.\r\n * @param objConfig.propertyKey - The property key of the target object.\r\n */\r\n constructor(protected objConfig: { target: any; propertyKey: string }) {\r\n // singelton service - fetch from angular\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n if (!prototype.___constructorOverridden) {\r\n prototype.___constructorOverridden = true;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the decorated function.\r\n * @returns - The decorated function.\r\n */\r\n public get Func(): ((...data: any[]) => Promise<any> | any) | null {\r\n if (\r\n this.objConfig?.target &&\r\n this.objConfig.target[this.objConfig.propertyKey]\r\n ) {\r\n return this.objConfig.target[this.objConfig.propertyKey].bind(\r\n this.getBindObject()\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns the bind object.\r\n * @private\r\n * @returns - The bind object.\r\n */\r\n private getBindObject(): any {\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n return prototype.___data._obj;\r\n }\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function Handle(method: string) {\r\n return function _Handle(target: any, propertyKey: string): any {\r\n // method annotation\r\n WebsocketClient.registerHandle(\r\n method,\r\n new DecorableFunction({ target, propertyKey })\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function OnSuccess(regexp: RegExp) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n WebsocketClient.onSuccess(\r\n new DecorableFunction({ target, propertyKey }),\r\n regexp\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\n\r\nexport function Outbound(\r\n method: string,\r\n requestingRequired?: boolean,\r\n cached?: boolean,\r\n sortBy?: (a: any, b: any) => number\r\n) {\r\n return function _Outbound(target: any, propertyKey: string): any {\r\n target.loading = new Map<string, boolean>();\r\n // property annotation\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) {\r\n if (!target.___received) target.___received = {};\r\n if (!target.___data) target.___data = {};\r\n if (!target.___received) target.___received = {};\r\n if (!target.___requested) target.___requested = {};\r\n if (!cached) {\r\n if (_this.dbService)\r\n _this.dbService.deleteByKey('outbound', method).subscribe(() => {});\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_this.dbService) {\r\n _this.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = result.data;\r\n target.loading.set(propertyKey, false);\r\n });\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_this.dbService) {\r\n _this.dbService.deleteByKey('outbound', method).subscribe(() => {});\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n target.___received[propertyKey] = false;\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n } else if (data == 'data_delete') {\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n target.___received[propertyKey] = false;\r\n target.___requested[propertyKey] = false;\r\n } else if (data == 'data_diff') {\r\n var data = target.___data[propertyKey] || [];\r\n inserted?.forEach((e) => {\r\n const matching = data.filter((d: any) => d.id == e.id);\r\n if (matching.length > 0) {\r\n data[data.indexOf(matching[0])] = e;\r\n } else {\r\n data.push(e);\r\n }\r\n });\r\n updated?.forEach((e) => {\r\n const matching = data.filter((d: any) => d.id == e.id);\r\n if (matching.length > 0) {\r\n data[data.indexOf(matching[0])] = e;\r\n } else {\r\n data.push(e);\r\n }\r\n });\r\n deleted?.forEach((e) => {\r\n data = data.filter((d: any) => d.id != e.id);\r\n });\r\n if (sortBy && data) data = data.sort(sortBy);\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n\r\n if (cached && specificHash) {\r\n if (_this.dbService) {\r\n if (data && data?.length > 0) {\r\n _this.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _this.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n } else {\r\n if (sortBy && data) data = data.sort(sortBy);\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n if (cached && specificHash) {\r\n if (_this.dbService) {\r\n if (data && data?.length > 0) {\r\n _this.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _this.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n }\r\n );\r\n if (requestingRequired) {\r\n WebsocketClient.addResetRequestingStateCallback(function callback() {\r\n if (target.___requested) {\r\n target.___requested[propertyKey] = false;\r\n }\r\n });\r\n }\r\n\r\n const obj = {\r\n configurable: true,\r\n get() {\r\n if (!target.___requested) target.___requested = {};\r\n if (requestingRequired && !target.___requested[propertyKey]) {\r\n target.___requested[propertyKey] = true;\r\n (this as any).send('request.' + method, null).then();\r\n }\r\n if (!target.___data) target.___data = {};\r\n if (!target.___data[propertyKey]) {\r\n target.loading.set(propertyKey, true);\r\n } else if (target.loading[propertyKey]) {\r\n target.loading.set(propertyKey, false);\r\n }\r\n return target.___data[propertyKey];\r\n },\r\n set(val: any) {\r\n if (!target.___data) target.___data = {};\r\n target.loading.set(propertyKey, false);\r\n if (sortBy && val) val = val.sort(sortBy);\r\n return (target.___data[propertyKey] = val);\r\n },\r\n };\r\n target[propertyKey] = obj;\r\n return obj;\r\n };\r\n}\r\n","export function Route(\r\n method: string,\r\n loadingKey?: string,\r\n dontEnsureTransmission?: boolean\r\n) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n // method annotation\r\n const original = target[propertyKey];\r\n target[propertyKey] = async function execRoute(...data: any): Promise<any> {\r\n if (loadingKey) {\r\n if (!this.loadingElements[loadingKey]) {\r\n this.loadingElements[loadingKey] = 0;\r\n }\r\n this.loadingElements[loadingKey]++;\r\n }\r\n const promise = original.bind(this)(...data);\r\n let res = null;\r\n if (this.client) {\r\n res = await this.client.send(method, data[0], dontEnsureTransmission);\r\n }\r\n await promise;\r\n if (loadingKey) this.loadingElements[loadingKey]--;\r\n return res;\r\n };\r\n return target;\r\n };\r\n}\r\n","/**\r\n * @deprecated\r\n */\r\nexport function Shared<T>(defaultValue?: T) {\r\n if (defaultValue) {\r\n throw Error(\r\n \"Active-Connect/@Shared: defaultValue is no longer supported, please assign the value to the variable itself.\"\r\n );\r\n }\r\n return function _Shared(target: any, propertyKey: string) {};\r\n}\r\n","import { WebsocketClient } from '../client';\r\n\r\nexport class LoadingStatus extends WebsocketClient {\r\n private __proto__: any;\r\n static loading: Map<string, boolean>;\r\n get isLoading(): boolean {\r\n // return general loading\r\n let anyTrue = false;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n anyTrue ||= e;\r\n });\r\n if (!anyTrue) this.__proto__.loading.clear();\r\n return this.__proto__.loading.size > 0;\r\n }\r\n getLoadingMap(): Map<string, boolean> {\r\n return this.__proto__.loading;\r\n }\r\n\r\n get getCurrent(): number {\r\n let count = 0;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n if (e) count++;\r\n });\r\n if (count == 0) {\r\n this.__proto__.loading.clear();\r\n }\r\n return count;\r\n }\r\n get getTotal(): number {\r\n return this.__proto__.loading.size;\r\n }\r\n}\r\n","import { Observable, Observer } from 'rxjs';\r\nimport { WebsocketClient } from '../client';\r\n\r\nexport interface IdObject {\r\n id: number | null | undefined;\r\n}\r\n\r\nexport class OutboundObject<T extends IdObject> {\r\n private previouslyCachedCount: number | undefined;\r\n constructor(\r\n private client: WebsocketClient,\r\n private method: string,\r\n private lazyLoaded?: boolean,\r\n public readonly cached?: boolean,\r\n private initialLoadingCount?: number,\r\n private sortBy?: (a: T, b: T) => number\r\n ) {\r\n this.target.loading = new Map<string, boolean>();\r\n\r\n if (this.client.dbService) {\r\n this.client.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n if (result) {\r\n this.previouslyCachedCount = result.data?.length || null;\r\n }\r\n });\r\n }\r\n\r\n const _this = this;\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n specificHash: number | null,\r\n insertedOrGroupData: any[] | null,\r\n updatedOrGroupId: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _client: WebsocketClient\r\n ) {\r\n if (!cached) {\r\n if (_client.dbService)\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_client.dbService) {\r\n _client.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n _this.setData(result.data);\r\n if (result.length) _this._length = result.length;\r\n _this.loading = false;\r\n });\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_client.dbService) {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n _this.loading = false;\r\n _this.requested = false;\r\n } else if (data == 'data_delete') {\r\n _this.data = undefined;\r\n _this.dataMap = new Map();\r\n _this.requested = false;\r\n _this.loadedGroupData = null;\r\n _this.loadedGroupId = null;\r\n _this._length = undefined;\r\n _this.loading = false;\r\n } else if (data == 'data_group') {\r\n if (\r\n _this.requestedGroupId ==\r\n (updatedOrGroupId ? updatedOrGroupId[0] : 0)\r\n ) {\r\n _this.loadedGroupData = insertedOrGroupData;\r\n _this.loadedGroupId = updatedOrGroupId ? updatedOrGroupId[0] : 0;\r\n _this.loadedGroupChanged?.next(insertedOrGroupData as T[]);\r\n _this.loading = false;\r\n }\r\n } else if (data == 'data_id') {\r\n if (\r\n _this.requestedId == (updatedOrGroupId ? updatedOrGroupId[0] : 0)\r\n ) {\r\n _this.loadedIdData =\r\n (insertedOrGroupData?.length || 0) > 0\r\n ? (insertedOrGroupData as any[])[0]\r\n : null;\r\n _this.loadedId = updatedOrGroupId ? updatedOrGroupId[0] : 0;\r\n _this.loadedIdChanged?.next(_this.loadedIdData as T);\r\n _this.loading = false;\r\n }\r\n } else if (data == 'data_diff') {\r\n insertedOrGroupData?.forEach((e) => {\r\n _this.dataMap.set(e.id, e);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(e);\r\n }\r\n });\r\n updatedOrGroupId?.forEach((e) => {\r\n _this.dataMap.set(e.id, e);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(e);\r\n }\r\n });\r\n deleted?.forEach((e) => {\r\n _this.dataMap.delete(e.id);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(null as any);\r\n }\r\n });\r\n _this.data = Array.from(_this.dataMap.values());\r\n if (_this.data && _this.sortBy)\r\n _this.data = _this.data.sort(_this.sortBy);\r\n _this.loading = false;\r\n\r\n if (cached && specificHash) {\r\n if (_client.dbService) {\r\n if (_this.data && _this.data?.length > 0) {\r\n _client.dbService\r\n .update('outbound', {\r\n method,\r\n data: _this.data,\r\n specificHash,\r\n length,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n } else {\r\n _this.setData(data);\r\n if (_this.loadedId) {\r\n const loadedValue = _this.dataMap.get(_this.loadedId);\r\n if (loadedValue) {\r\n _this.loadedIdData = loadedValue;\r\n _this.loadedIdChanged?.next(_this.loadedIdData);\r\n }\r\n }\r\n _this.loading = false;\r\n if (cached && specificHash) {\r\n if (_client.dbService) {\r\n if (data && data?.length > 0) {\r\n _client.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n length,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n if (length) _this._length = length;\r\n }\r\n );\r\n\r\n WebsocketClient.addResetRequestingStateCallback(() => {\r\n this.afterServerReconnected();\r\n });\r\n }\r\n\r\n get target(): any {\r\n return (this.client as any).__proto__;\r\n }\r\n\r\n private dataMap: Map<number | null | undefined, T> = new Map();\r\n private data: T[] | undefined = undefined;\r\n\r\n public get(id: number): Observable<T> {\r\n if (this.requestedId == id && this.loadedObservable && this.loadedIdData) {\r\n if (this.loadedIdData)\r\n setTimeout(() => {\r\n if (this.loadedIdData) this.loadedIdChanged?.next(this.loadedIdData);\r\n }, 50);\r\n return this.loadedObservable;\r\n }\r\n\r\n if (this.requestedId != id || !this.loadedObservable) {\r\n this.loadedObservable = new Observable<T>((observer) => {\r\n this.loadedIdChanged = observer;\r\n });\r\n }\r\n new Promise<void>(async (resolve) => {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n if (this.data) {\r\n const res = this.dataMap.get(id);\r\n if (res) {\r\n this.loadedIdChanged?.next(res);\r\n resolve();\r\n return;\r\n }\r\n }\r\n if (this.loadedId == id) {\r\n this.loadedIdChanged?.next(this.loadedIdData as T);\r\n } else {\r\n await this.requestById(id);\r\n }\r\n resolve();\r\n }).then();\r\n return this.loadedObservable;\r\n }\r\n\r\n public getForGroup(groupId: number): Observable<T[]> {\r\n if (\r\n this.requestedGroupId == groupId &&\r\n this.loadedGroupObservable &&\r\n this.loadedGroupData\r\n ) {\r\n if (this.loadedGroupData)\r\n setTimeout(() => {\r\n if (this.loadedGroupData)\r\n this.loadedGroupChanged?.next(this.loadedGroupData);\r\n }, 50);\r\n return this.loadedGroupObservable;\r\n }\r\n\r\n if (this.requestedGroupId != groupId || !this.loadedGroupObservable) {\r\n this.loadedGroupObservable = new Observable<T[]>((observer) => {\r\n this.loadedGroupChanged = observer;\r\n });\r\n }\r\n new Promise<void>(async (resolve) => {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n if (this.loadedGroupId == groupId) {\r\n this.loadedGroupChanged?.next(this.loadedGroupData as T[]);\r\n } else {\r\n await this.requestForGroup(groupId);\r\n }\r\n resolve();\r\n }).then();\r\n\r\n return this.loadedGroupObservable;\r\n }\r\n\r\n public get all(): T[] | undefined {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n return this.data;\r\n }\r\n\r\n private requested: boolean = false;\r\n public async load(count?: number): Promise<void> {\r\n if (this.lazyLoaded) {\r\n const hasBeenRequestedBefore = this.requested;\r\n this._loading = true;\r\n if (!this.requested) {\r\n this.loading = true;\r\n }\r\n this.requested = true;\r\n await this.client.send('request.' + this.method, {\r\n count: hasBeenRequestedBefore\r\n ? this.data\r\n ? count || this.initialLoadingCount\r\n ? (count || (this.initialLoadingCount as number)) +\r\n this.loadedLength\r\n : undefined\r\n : undefined\r\n : this.previouslyCachedCount || (this.initialLoadingCount as number),\r\n loaded: this.loadedLength,\r\n });\r\n } else {\r\n throw Error(\r\n 'Active-Connect: Cannot run loading request as this outbound is not lazy-loaded.'\r\n );\r\n }\r\n }\r\n\r\n private _loading = false;\r\n private set loading(value: boolean) {\r\n this._loading = value;\r\n this.target.loading.set(this.method, value);\r\n }\r\n public get loading(): boolean {\r\n return this._loading;\r\n }\r\n public get loadedLength(): number {\r\n return this.data?.length || 0;\r\n }\r\n private _length: number | undefined = undefined;\r\n public get length(): number | undefined {\r\n return this._length;\r\n }\r\n\r\n private requestedId: number | null = null;\r\n private loadedObservable: Observable<T> | null = null;\r\n private loadedId: number | null = null;\r\n private loadedIdData: T | null = null;\r\n private loadedIdChanged: Observer<T> | null = null;\r\n private requestById(id: number): Promise<any> {\r\n this.loading = true;\r\n this.requestedId = id;\r\n return this.client.send('request.' + this.method, { id }) as Promise<any>;\r\n }\r\n\r\n private requestedGroupId: number | null = null;\r\n private loadedGroupObservable: Observable<T[]> | null = null;\r\n private loadedGroupId: number | null = null;\r\n private loadedGroupData: T[] | null = null;\r\n private loadedGroupChanged: Observer<T[]> | null = null;\r\n private requestForGroup(groupId: number): Promise<T[]> {\r\n this.loading = true;\r\n this.requestedGroupId = groupId;\r\n return this.client.send('request.' + this.method, { groupId });\r\n }\r\n\r\n private setData(data: T[] | { added: T[] | undefined; length: number }) {\r\n this.data = data as T[];\r\n if (this.data && this.sortBy) this.data = this.data.sort(this.sortBy);\r\n this._length = data.length;\r\n this.dataMap = new Map();\r\n this.data.forEach((d) => {\r\n this.dataMap.set(d.id, d);\r\n });\r\n }\r\n\r\n get isEmpty() {\r\n return this.data == undefined;\r\n }\r\n\r\n /**\r\n * The contained data can be modified within the callback method\r\n */\r\n public update(callback: (data: T[]) => void) {\r\n if (this.data) {\r\n const updateLengthVariable = this.data.length == this._length;\r\n const length = this.length;\r\n callback(this.data);\r\n this.setData(this.data);\r\n if (!updateLengthVariable) {\r\n this._length = length;\r\n }\r\n }\r\n }\r\n\r\n private afterServerReconnected() {\r\n if (this.requested) {\r\n this.requested = false;\r\n this.load().then();\r\n }\r\n if (this.loadedId) {\r\n this.loadedIdData = null;\r\n this.get(this.loadedId);\r\n }\r\n if (this.loadedGroupId) {\r\n this.loadedGroupData = null;\r\n this.getForGroup(this.loadedGroupId);\r\n }\r\n }\r\n}\r\n","/*\n * Public API Surface of active-connect-ng2\n */\n\nexport * from './lib/active-connect-ng2.module';\nexport * from './lib/websocket';\nexport { NgxIndexedDBService } from 'ngx-indexed-db';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"active-connect-ng2.mjs","sources":["../../../projects/active-connect-ng2/src/lib/active-connect-ng2.module.ts","../../../projects/active-connect-ng2/src/lib/websocket/json/json-parser.ts","../../../projects/active-connect-ng2/src/lib/websocket/client.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/function.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/handle.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/on-success.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/outbound.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/route.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/shared.ts","../../../projects/active-connect-ng2/src/lib/websocket/lifecycle/loading-status.ts","../../../projects/active-connect-ng2/src/lib/websocket/objects/outbound-object.ts","../../../projects/active-connect-ng2/src/public-api.ts","../../../projects/active-connect-ng2/src/active-connect-ng2.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NgxIndexedDBModule, DBConfig } from 'ngx-indexed-db';\n\nconst dbConfig: DBConfig = {\n name: 'activeconnect_cache',\n version: 1,\n objectStoresMeta: [\n {\n store: 'outbound',\n storeConfig: { keyPath: 'method', autoIncrement: false },\n storeSchema: [\n { name: 'method', keypath: 'method', options: { unique: true } },\n { name: 'data', keypath: 'data', options: { unique: false } },\n {\n name: 'specificHash',\n keypath: 'specificHash',\n options: { unique: false },\n },\n {\n name: 'length',\n keypath: 'length',\n options: { unique: false },\n },\n ],\n },\n ],\n};\n\n@NgModule({\n declarations: [],\n imports: [NgxIndexedDBModule.forRoot(dbConfig)],\n exports: [NgxIndexedDBModule],\n})\nexport class ActiveConnectNg2Module {}\n","export class JsonParser {\r\n static stringify(obj: any) {\r\n return JSON.stringify(obj);\r\n }\r\n\r\n static parsingFunction(key: any, value: any) {\r\n var a;\r\n if (typeof value === \"string\") {\r\n a =\r\n /^[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}T[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\.[0-9]{3}Z$/.exec(\r\n value\r\n );\r\n if (a) {\r\n return new Date(a as any);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n static parse(str: string) {\r\n if (str && str != \"undefined\") {\r\n return JSON.parse(str, JsonParser.parsingFunction);\r\n }\r\n return str;\r\n }\r\n}\r\n","import { NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { DecorableFunction } from './decorators/function';\r\nimport { JsonParser } from './json/json-parser';\r\n\r\nexport class WebsocketClient {\r\n ws!: WebSocket;\r\n pool!: { WssConnected: boolean } | null;\r\n\r\n constructor(\r\n private url?: string,\r\n private supportsCache?: boolean,\r\n public dbService?: NgxIndexedDBService\r\n ) {\r\n if (supportsCache) this.initCache();\r\n if (!url) {\r\n let protocol;\r\n let port;\r\n switch (document.location.protocol) {\r\n case 'https:': {\r\n protocol = 'wss:';\r\n port = ':443';\r\n break;\r\n }\r\n default: {\r\n protocol = 'ws:';\r\n port = ':80';\r\n break;\r\n }\r\n }\r\n this.url = protocol + '//' + document.location.hostname + port + '/wss';\r\n }\r\n this.connect(this.url as string);\r\n }\r\n\r\n subject: any;\r\n\r\n private connect(url: string) {\r\n if (!this.subject) {\r\n this.create(url);\r\n }\r\n return this.subject;\r\n }\r\n\r\n private requestStack: any[] = [];\r\n\r\n private _token = '';\r\n public get Token(): string {\r\n if (!this._token) {\r\n if (window.localStorage)\r\n this._token = window.localStorage.getItem('token') || '';\r\n }\r\n return this._token;\r\n }\r\n public set Token(val: string) {\r\n this._token = val;\r\n if (window.localStorage) window.localStorage.setItem('token', val);\r\n }\r\n\r\n private set Connected(value: boolean) {\r\n if (value) {\r\n this.sendBrowserInfoToServer();\r\n\r\n this.auth(this.Token).then(() => {\r\n this.resetRequestedState();\r\n this.requestStack.forEach((e) => {\r\n this.sendToSocket(e.method, e.data);\r\n this.requestStack = this.requestStack.filter((e1) => e1 != e);\r\n });\r\n });\r\n }\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = value;\r\n }\r\n private static resetRequestedStateCallbacks: Function[] = [];\r\n private connectionEstablishedOnce: boolean = false;\r\n private resetRequestedState() {\r\n if (this.connectionEstablishedOnce) {\r\n // reset requested state for outbounds\r\n WebsocketClient.resetRequestedStateCallbacks.forEach((reset) => {\r\n reset();\r\n });\r\n } else {\r\n this.connectionEstablishedOnce = true;\r\n }\r\n }\r\n public static addResetRequestingStateCallback(callback: Function) {\r\n WebsocketClient.resetRequestedStateCallbacks.push(callback);\r\n }\r\n\r\n private create(url: string) {\r\n // create new connection\r\n this.ws = new WebSocket(url + (this.supportsCache ? '?cache=true' : ''));\r\n this.ws.onerror = (err) => {\r\n this.ws.close();\r\n console.log(err);\r\n };\r\n this.ws.onopen = () => {\r\n this.Connected = true;\r\n };\r\n this.ws.onmessage = (e) => {\r\n this.messageReceived(JsonParser.parse(e.data.toString()));\r\n };\r\n this.ws.onclose = () => {\r\n if (!this.closed) {\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = false;\r\n setTimeout(() => {\r\n this.connect(url);\r\n }, 1000);\r\n }\r\n };\r\n }\r\n\r\n private messageId: number = 0;\r\n protected sendToSocket(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ) {\r\n const messageId = ++this.messageId;\r\n if (this.ws.readyState != this.ws.OPEN) {\r\n if (!dontEnsureTransmission)\r\n this.requestStack.push({ method, data, messageId });\r\n else return false;\r\n } else {\r\n this.ws.send(JsonParser.stringify({ method, value: data, messageId }));\r\n }\r\n return messageId;\r\n }\r\n\r\n async auth(token: string): Promise<any> {\r\n return this.sendToSocket('auth.token', token);\r\n }\r\n\r\n public send(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ): Promise<any> {\r\n const messageId = this.sendToSocket(\r\n method,\r\n data,\r\n dontEnsureTransmission || false\r\n );\r\n if (messageId) {\r\n return this.expectMethod(`m.${method}`, messageId);\r\n } else {\r\n return new Promise((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n private expectedMethods: Map<string | number, Array<Function>> = new Map();\r\n private expectMethod(method: string, messageId?: number | null) {\r\n return new Promise((resolve) => {\r\n if (messageId) {\r\n this.expectedMethods.set(messageId, [resolve]);\r\n } else {\r\n if (this.expectedMethods.has(method)) {\r\n let arr = this.expectedMethods.get(method);\r\n (arr as Array<Function>).push(resolve);\r\n } else {\r\n this.expectedMethods.set(method, [resolve]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private messageReceived({\r\n method,\r\n value,\r\n messageId,\r\n specificHash,\r\n inserted,\r\n updated,\r\n deleted,\r\n length,\r\n }: {\r\n method: string;\r\n value: any;\r\n messageId: number | null;\r\n specificHash: number | null;\r\n inserted: any[] | null;\r\n updated: any[] | null;\r\n deleted: any[] | null;\r\n length: number | null;\r\n }) {\r\n if (method == '___cache') {\r\n this.handleOutboundCacheRequest(value);\r\n }\r\n if (messageId) {\r\n const callback = this.expectedMethods.get(messageId);\r\n if (callback) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n this.invokeSuccessHandlers(method);\r\n } else {\r\n const callback = this.expectedMethods.get(method);\r\n if (callback && callback.length > 0) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n } else {\r\n const out = WebsocketClient.outbounds.get(method);\r\n if (out) {\r\n out(value, specificHash, inserted, updated, deleted, length, this);\r\n }\r\n const handle = WebsocketClient.handles.get(method);\r\n if (handle) {\r\n (handle.Func as Function)(value);\r\n }\r\n }\r\n }\r\n } else {\r\n throw Error(\r\n 'No MessageId was provided, the connection is not supported.'\r\n );\r\n }\r\n }\r\n\r\n private handleOutboundCacheRequest(method: string) {\r\n if (this.dbService) {\r\n this.dbService.getByKey('outbound', method).subscribe((item: any) => {\r\n if (item) {\r\n this.send('___cache', {\r\n method,\r\n specificHash: item.specificHash || null,\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n specificHash: null,\r\n });\r\n }\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n specificHash: null,\r\n });\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n\r\n private static outbounds: Map<\r\n string,\r\n (\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n > = new Map();\r\n static expectOutbound(\r\n method: string,\r\n callback: (\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n ) {\r\n WebsocketClient.outbounds.set(method, callback);\r\n }\r\n\r\n private static handles: Map<string, DecorableFunction> = new Map();\r\n static registerHandle(method: string, callback: DecorableFunction) {\r\n WebsocketClient.handles.set(method, callback);\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (this.ws) return this.ws.readyState == WebSocket.OPEN;\r\n return true;\r\n }\r\n\r\n private sendBrowserInfoToServer() {\r\n // send browser / os information\r\n const browser = this.getBrowser();\r\n const os = this.getOS();\r\n this.send('___browser', {\r\n browser: `${browser.name} ${browser.version} ${os}`,\r\n });\r\n }\r\n\r\n public getBrowser(): { name: string; version: string } {\r\n // https://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/\r\n var ua = navigator.userAgent,\r\n tem,\r\n M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE ', version: tem[1] || '' };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) {\r\n return { name: 'Opera', version: tem[1] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return {\r\n name: M[0],\r\n version: M[1],\r\n };\r\n }\r\n\r\n public getOS(): string {\r\n var userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod'],\r\n os = null;\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS';\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS';\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows';\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android';\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux';\r\n }\r\n\r\n return os || '';\r\n }\r\n\r\n private static onSuccessHandlers: {\r\n callback: DecorableFunction;\r\n regexp: RegExp;\r\n }[] = [];\r\n public static onSuccess(callback: DecorableFunction, regexp: RegExp) {\r\n this.onSuccessHandlers.push({ callback, regexp });\r\n }\r\n\r\n private invokeSuccessHandlers(method: string) {\r\n WebsocketClient.onSuccessHandlers\r\n .filter((e) => e.regexp.test(method))\r\n .forEach((e) => {\r\n var res = (e.callback.Func as Function)();\r\n if (res && res.then) {\r\n res.then();\r\n }\r\n });\r\n }\r\n\r\n public closed = false;\r\n public disconnect(restart?: boolean) {\r\n if (!restart) this.closed = true;\r\n this.ws.close();\r\n }\r\n\r\n private initCache() {}\r\n}\r\n","/**\r\n * Represents the reference to an object method used for websocket routes and outbounds.\r\n */\r\nexport class DecorableFunction {\r\n /**\r\n * Creates an instance of DecorableFunction.\r\n * @param objConfig - The configuration object for the object method.\r\n * @param objConfig.target - The target object.\r\n * @param objConfig.propertyKey - The property key of the target object.\r\n */\r\n constructor(protected objConfig: { target: any; propertyKey: string }) {\r\n // singelton service - fetch from angular\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n if (!prototype.___constructorOverridden) {\r\n prototype.___constructorOverridden = true;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the decorated function.\r\n * @returns - The decorated function.\r\n */\r\n public get Func(): ((...data: any[]) => Promise<any> | any) | null {\r\n if (\r\n this.objConfig?.target &&\r\n this.objConfig.target[this.objConfig.propertyKey]\r\n ) {\r\n return this.objConfig.target[this.objConfig.propertyKey].bind(\r\n this.getBindObject()\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns the bind object.\r\n * @private\r\n * @returns - The bind object.\r\n */\r\n private getBindObject(): any {\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n return prototype.___data._obj;\r\n }\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function Handle(method: string) {\r\n return function _Handle(target: any, propertyKey: string): any {\r\n // method annotation\r\n WebsocketClient.registerHandle(\r\n method,\r\n new DecorableFunction({ target, propertyKey })\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function OnSuccess(regexp: RegExp) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n WebsocketClient.onSuccess(\r\n new DecorableFunction({ target, propertyKey }),\r\n regexp\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\n\r\nexport function Outbound(\r\n method: string,\r\n requestingRequired?: boolean,\r\n cached?: boolean,\r\n sortBy?: (a: any, b: any) => number\r\n) {\r\n return function _Outbound(target: any, propertyKey: string): any {\r\n target.loading = new Map<string, boolean>();\r\n // property annotation\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) {\r\n if (!target.___received) target.___received = {};\r\n if (!target.___data) target.___data = {};\r\n if (!target.___received) target.___received = {};\r\n if (!target.___requested) target.___requested = {};\r\n if (!cached) {\r\n if (_this.dbService)\r\n _this.dbService.deleteByKey('outbound', method).subscribe(() => {});\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_this.dbService) {\r\n _this.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = result.data;\r\n target.loading.set(propertyKey, false);\r\n });\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_this.dbService) {\r\n _this.dbService.deleteByKey('outbound', method).subscribe(() => {});\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n target.___received[propertyKey] = false;\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n } else if (data == 'data_delete') {\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n target.___received[propertyKey] = false;\r\n target.___requested[propertyKey] = false;\r\n } else if (data == 'data_diff') {\r\n var data = target.___data[propertyKey] || [];\r\n inserted?.forEach((e) => {\r\n const matching = data.filter((d: any) => d.id == e.id);\r\n if (matching.length > 0) {\r\n data[data.indexOf(matching[0])] = e;\r\n } else {\r\n data.push(e);\r\n }\r\n });\r\n updated?.forEach((e) => {\r\n const matching = data.filter((d: any) => d.id == e.id);\r\n if (matching.length > 0) {\r\n data[data.indexOf(matching[0])] = e;\r\n } else {\r\n data.push(e);\r\n }\r\n });\r\n deleted?.forEach((e) => {\r\n data = data.filter((d: any) => d.id != e.id);\r\n });\r\n if (sortBy && data) data = data.sort(sortBy);\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n\r\n if (cached && specificHash) {\r\n if (_this.dbService) {\r\n if (data && data?.length > 0) {\r\n _this.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _this.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n } else {\r\n if (sortBy && data) data = data.sort(sortBy);\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n if (cached && specificHash) {\r\n if (_this.dbService) {\r\n if (data && data?.length > 0) {\r\n _this.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _this.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n }\r\n );\r\n if (requestingRequired) {\r\n WebsocketClient.addResetRequestingStateCallback(function callback() {\r\n if (target.___requested) {\r\n target.___requested[propertyKey] = false;\r\n }\r\n });\r\n }\r\n\r\n const obj = {\r\n configurable: true,\r\n get() {\r\n if (!target.___requested) target.___requested = {};\r\n if (requestingRequired && !target.___requested[propertyKey]) {\r\n target.___requested[propertyKey] = true;\r\n (this as any).send('request.' + method, null).then();\r\n }\r\n if (!target.___data) target.___data = {};\r\n if (!target.___data[propertyKey]) {\r\n target.loading.set(propertyKey, true);\r\n } else if (target.loading[propertyKey]) {\r\n target.loading.set(propertyKey, false);\r\n }\r\n return target.___data[propertyKey];\r\n },\r\n set(val: any) {\r\n if (!target.___data) target.___data = {};\r\n target.loading.set(propertyKey, false);\r\n if (sortBy && val) val = val.sort(sortBy);\r\n return (target.___data[propertyKey] = val);\r\n },\r\n };\r\n target[propertyKey] = obj;\r\n return obj;\r\n };\r\n}\r\n","export function Route(\r\n method: string,\r\n loadingKey?: string,\r\n dontEnsureTransmission?: boolean\r\n) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n // method annotation\r\n const original = target[propertyKey];\r\n target[propertyKey] = async function execRoute(...data: any): Promise<any> {\r\n if (loadingKey) {\r\n if (!this.loadingElements[loadingKey]) {\r\n this.loadingElements[loadingKey] = 0;\r\n }\r\n this.loadingElements[loadingKey]++;\r\n }\r\n const promise = original.bind(this)(...data);\r\n let res = null;\r\n if (this.client) {\r\n res = await this.client.send(method, data[0], dontEnsureTransmission);\r\n }\r\n await promise;\r\n if (loadingKey) this.loadingElements[loadingKey]--;\r\n return res;\r\n };\r\n return target;\r\n };\r\n}\r\n","/**\r\n * @deprecated\r\n */\r\nexport function Shared<T>(defaultValue?: T) {\r\n if (defaultValue) {\r\n throw Error(\r\n \"Active-Connect/@Shared: defaultValue is no longer supported, please assign the value to the variable itself.\"\r\n );\r\n }\r\n return function _Shared(target: any, propertyKey: string) {};\r\n}\r\n","import { WebsocketClient } from '../client';\r\n\r\nexport class LoadingStatus extends WebsocketClient {\r\n private __proto__: any;\r\n static loading: Map<string, boolean>;\r\n get isLoading(): boolean {\r\n // return general loading\r\n let anyTrue = false;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n anyTrue ||= e;\r\n });\r\n if (!anyTrue) this.__proto__.loading.clear();\r\n return this.__proto__.loading.size > 0;\r\n }\r\n getLoadingMap(): Map<string, boolean> {\r\n return this.__proto__.loading;\r\n }\r\n\r\n get getCurrent(): number {\r\n let count = 0;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n if (e) count++;\r\n });\r\n if (count == 0) {\r\n this.__proto__.loading.clear();\r\n }\r\n return count;\r\n }\r\n get getTotal(): number {\r\n return this.__proto__.loading.size;\r\n }\r\n}\r\n","import { Observable, Observer } from 'rxjs';\r\nimport { WebsocketClient } from '../client';\r\n\r\nexport interface IdObject {\r\n id: number | null | undefined;\r\n}\r\n\r\nexport class OutboundObject<T extends IdObject> {\r\n private previouslyCachedCount: number | undefined;\r\n constructor(\r\n private client: WebsocketClient,\r\n private method: string,\r\n private lazyLoaded?: boolean,\r\n public readonly cached?: boolean,\r\n private initialLoadingCount?: number,\r\n private sortBy?: (a: T, b: T) => number\r\n ) {\r\n this.target.loading = new Map<string, boolean>();\r\n\r\n if (this.client.dbService) {\r\n this.client.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n if (result) {\r\n this.previouslyCachedCount = result.data?.length || null;\r\n }\r\n });\r\n }\r\n\r\n const _this = this;\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n specificHash: number | null,\r\n insertedOrGroupData: any[] | null,\r\n updatedOrGroupId: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _client: WebsocketClient\r\n ) {\r\n if (!cached) {\r\n if (_client.dbService)\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_client.dbService) {\r\n _client.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n _this.setData(result.data);\r\n if (result.length) _this._length = result.length;\r\n _this.loading = false;\r\n });\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_client.dbService) {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n _this.loading = false;\r\n _this.requested = false;\r\n } else if (data == 'data_delete') {\r\n _this.data = undefined;\r\n _this.dataMap = new Map();\r\n _this.requested = false;\r\n _this.loadedGroupData = null;\r\n _this.loadedGroupId = null;\r\n _this._length = undefined;\r\n _this.loading = false;\r\n } else if (data == 'data_group') {\r\n if (\r\n _this.requestedGroupId ==\r\n (updatedOrGroupId ? updatedOrGroupId[0] : 0)\r\n ) {\r\n _this.loadedGroupData = insertedOrGroupData;\r\n _this.loadedGroupId = updatedOrGroupId ? updatedOrGroupId[0] : 0;\r\n _this.loadedGroupChanged?.next(insertedOrGroupData as T[]);\r\n _this.loading = false;\r\n }\r\n } else if (data == 'data_id') {\r\n if (\r\n _this.requestedId == (updatedOrGroupId ? updatedOrGroupId[0] : 0)\r\n ) {\r\n _this.loadedIdData =\r\n (insertedOrGroupData?.length || 0) > 0\r\n ? (insertedOrGroupData as any[])[0]\r\n : null;\r\n _this.loadedId = updatedOrGroupId ? updatedOrGroupId[0] : 0;\r\n _this.loadedIdChanged?.next(_this.loadedIdData as T);\r\n _this.loading = false;\r\n }\r\n } else if (data == 'data_diff') {\r\n insertedOrGroupData?.forEach((e) => {\r\n _this.dataMap.set(e.id, e);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(e);\r\n }\r\n });\r\n updatedOrGroupId?.forEach((e) => {\r\n _this.dataMap.set(e.id, e);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(e);\r\n }\r\n });\r\n deleted?.forEach((e) => {\r\n _this.dataMap.delete(e.id);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(null as any);\r\n }\r\n });\r\n _this.data = Array.from(_this.dataMap.values());\r\n if (_this.data && _this.sortBy)\r\n _this.data = _this.data.sort(_this.sortBy);\r\n _this.loading = false;\r\n\r\n if (cached && specificHash) {\r\n if (_client.dbService) {\r\n if (_this.data && _this.data?.length > 0) {\r\n _client.dbService\r\n .update('outbound', {\r\n method,\r\n data: _this.data,\r\n specificHash,\r\n length,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n } else {\r\n _this.setData(data);\r\n if (_this.loadedId) {\r\n const loadedValue = _this.dataMap.get(_this.loadedId);\r\n if (loadedValue) {\r\n _this.loadedIdData = loadedValue;\r\n _this.loadedIdChanged?.next(_this.loadedIdData);\r\n }\r\n }\r\n _this.loading = false;\r\n if (cached && specificHash) {\r\n if (_client.dbService) {\r\n if (data && data?.length > 0) {\r\n _client.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n length,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n if (length) _this._length = length;\r\n }\r\n );\r\n\r\n WebsocketClient.addResetRequestingStateCallback(() => {\r\n this.afterServerReconnected();\r\n });\r\n }\r\n\r\n get target(): any {\r\n return (this.client as any).__proto__;\r\n }\r\n\r\n private dataMap: Map<number | null | undefined, T> = new Map();\r\n private data: T[] | undefined = undefined;\r\n\r\n public get(id: number): Observable<T> {\r\n if (this.requestedId == id && this.loadedObservable && this.loadedIdData) {\r\n if (this.loadedIdData)\r\n setTimeout(() => {\r\n if (this.loadedIdData) this.loadedIdChanged?.next(this.loadedIdData);\r\n }, 50);\r\n return this.loadedObservable;\r\n }\r\n\r\n if (this.requestedId != id || !this.loadedObservable) {\r\n this.loadedObservable = new Observable<T>((observer) => {\r\n this.loadedIdChanged = observer;\r\n });\r\n }\r\n new Promise<void>(async (resolve) => {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n if (this.data) {\r\n const res = this.dataMap.get(id);\r\n if (res) {\r\n this.loadedIdChanged?.next(res);\r\n resolve();\r\n return;\r\n }\r\n }\r\n if (this.loadedId == id) {\r\n this.loadedIdChanged?.next(this.loadedIdData as T);\r\n } else {\r\n await this.requestById(id);\r\n }\r\n resolve();\r\n }).then();\r\n return this.loadedObservable;\r\n }\r\n\r\n public getForGroup(groupId: number): Observable<T[]> {\r\n if (\r\n this.requestedGroupId == groupId &&\r\n this.loadedGroupObservable &&\r\n this.loadedGroupData\r\n ) {\r\n setTimeout(() => {\r\n if (this.loadedGroupData)\r\n this.loadedGroupChanged?.next(this.loadedGroupData);\r\n }, 50);\r\n return this.loadedGroupObservable;\r\n }\r\n\r\n if (this.requestedGroupId != groupId || !this.loadedGroupObservable) {\r\n this.loadedGroupObservable = new Observable<T[]>((observer) => {\r\n this.loadedGroupChanged = observer;\r\n });\r\n }\r\n new Promise<void>(async (resolve) => {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n if (this.loadedGroupId == groupId && this.loadedGroupData) {\r\n this.loadedGroupChanged?.next(this.loadedGroupData as T[]);\r\n } else {\r\n await this.requestForGroup(groupId);\r\n }\r\n resolve();\r\n }).then();\r\n\r\n return this.loadedGroupObservable;\r\n }\r\n\r\n public get all(): T[] | undefined {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n return this.data;\r\n }\r\n\r\n private requested: boolean = false;\r\n public async load(count?: number): Promise<void> {\r\n if (this.lazyLoaded) {\r\n const hasBeenRequestedBefore = this.requested;\r\n this._loading = true;\r\n if (!this.requested) {\r\n this.loading = true;\r\n }\r\n this.requested = true;\r\n await this.client.send('request.' + this.method, {\r\n count: hasBeenRequestedBefore\r\n ? this.data\r\n ? count || this.initialLoadingCount\r\n ? (count || (this.initialLoadingCount as number)) +\r\n this.loadedLength\r\n : undefined\r\n : undefined\r\n : this.previouslyCachedCount || (this.initialLoadingCount as number),\r\n loaded: this.loadedLength,\r\n });\r\n } else {\r\n throw Error(\r\n 'Active-Connect: Cannot run loading request as this outbound is not lazy-loaded.'\r\n );\r\n }\r\n }\r\n\r\n private _loading = false;\r\n private set loading(value: boolean) {\r\n this._loading = value;\r\n this.target.loading.set(this.method, value);\r\n }\r\n public get loading(): boolean {\r\n return this._loading;\r\n }\r\n public get loadedLength(): number {\r\n return this.data?.length || 0;\r\n }\r\n private _length: number | undefined = undefined;\r\n public get length(): number | undefined {\r\n return this._length;\r\n }\r\n\r\n private requestedId: number | null = null;\r\n private loadedObservable: Observable<T> | null = null;\r\n private loadedId: number | null = null;\r\n private loadedIdData: T | null = null;\r\n private loadedIdChanged: Observer<T> | null = null;\r\n private requestById(id: number): Promise<any> {\r\n this.loading = true;\r\n this.requestedId = id;\r\n return this.client.send('request.' + this.method, { id }) as Promise<any>;\r\n }\r\n\r\n private requestedGroupId: number | null = null;\r\n private loadedGroupObservable: Observable<T[]> | null = null;\r\n private loadedGroupId: number | null = null;\r\n private loadedGroupData: T[] | null = null;\r\n private loadedGroupChanged: Observer<T[]> | null = null;\r\n private requestForGroup(groupId: number): Promise<T[]> {\r\n this.loading = true;\r\n this.requestedGroupId = groupId;\r\n return this.client.send('request.' + this.method, { groupId });\r\n }\r\n\r\n private setData(data: T[] | { added: T[] | undefined; length: number }) {\r\n this.data = data as T[];\r\n if (this.data && this.sortBy) this.data = this.data.sort(this.sortBy);\r\n this._length = data.length;\r\n this.dataMap = new Map();\r\n this.data.forEach((d) => {\r\n this.dataMap.set(d.id, d);\r\n });\r\n }\r\n\r\n get isEmpty() {\r\n return this.data == undefined;\r\n }\r\n\r\n /**\r\n * The contained data can be modified within the callback method\r\n */\r\n public update(callback: (data: T[]) => void) {\r\n if (this.data) {\r\n const updateLengthVariable = this.data.length == this._length;\r\n const length = this.length;\r\n callback(this.data);\r\n this.setData(this.data);\r\n if (!updateLengthVariable) {\r\n this._length = length;\r\n }\r\n }\r\n }\r\n\r\n private afterServerReconnected() {\r\n if (this.requested && this.lazyLoaded) {\r\n this.requested = false;\r\n this.load(1).then();\r\n }\r\n if (this.loadedId) {\r\n this.loadedIdData = null;\r\n this.get(this.loadedId);\r\n }\r\n if (this.loadedGroupId) {\r\n this.loadedGroupData = null;\r\n this.getForGroup(this.loadedGroupId);\r\n }\r\n }\r\n}\r\n","/*\n * Public API Surface of active-connect-ng2\n */\n\nexport * from './lib/active-connect-ng2.module';\nexport * from './lib/websocket';\nexport { NgxIndexedDBService } from 'ngx-indexed-db';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -865,11 +865,10 @@ class OutboundObject {
|
|
|
865
865
|
if (this.requestedGroupId == groupId &&
|
|
866
866
|
this.loadedGroupObservable &&
|
|
867
867
|
this.loadedGroupData) {
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
}, 50);
|
|
868
|
+
setTimeout(() => {
|
|
869
|
+
if (this.loadedGroupData)
|
|
870
|
+
this.loadedGroupChanged?.next(this.loadedGroupData);
|
|
871
|
+
}, 50);
|
|
873
872
|
return this.loadedGroupObservable;
|
|
874
873
|
}
|
|
875
874
|
if (this.requestedGroupId != groupId || !this.loadedGroupObservable) {
|
|
@@ -881,7 +880,7 @@ class OutboundObject {
|
|
|
881
880
|
if (!this.requested && this.lazyLoaded) {
|
|
882
881
|
this.load().then();
|
|
883
882
|
}
|
|
884
|
-
if (this.loadedGroupId == groupId) {
|
|
883
|
+
if (this.loadedGroupId == groupId && this.loadedGroupData) {
|
|
885
884
|
this.loadedGroupChanged?.next(this.loadedGroupData);
|
|
886
885
|
}
|
|
887
886
|
else {
|
|
@@ -972,9 +971,9 @@ class OutboundObject {
|
|
|
972
971
|
}
|
|
973
972
|
}
|
|
974
973
|
afterServerReconnected() {
|
|
975
|
-
if (this.requested) {
|
|
974
|
+
if (this.requested && this.lazyLoaded) {
|
|
976
975
|
this.requested = false;
|
|
977
|
-
this.load().then();
|
|
976
|
+
this.load(1).then();
|
|
978
977
|
}
|
|
979
978
|
if (this.loadedId) {
|
|
980
979
|
this.loadedIdData = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-connect-ng2.mjs","sources":["../../../projects/active-connect-ng2/src/lib/active-connect-ng2.module.ts","../../../projects/active-connect-ng2/src/lib/websocket/json/json-parser.ts","../../../projects/active-connect-ng2/src/lib/websocket/client.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/function.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/handle.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/on-success.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/outbound.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/route.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/shared.ts","../../../projects/active-connect-ng2/src/lib/websocket/lifecycle/loading-status.ts","../../../projects/active-connect-ng2/src/lib/websocket/objects/outbound-object.ts","../../../projects/active-connect-ng2/src/public-api.ts","../../../projects/active-connect-ng2/src/active-connect-ng2.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NgxIndexedDBModule, DBConfig } from 'ngx-indexed-db';\n\nconst dbConfig: DBConfig = {\n name: 'activeconnect_cache',\n version: 1,\n objectStoresMeta: [\n {\n store: 'outbound',\n storeConfig: { keyPath: 'method', autoIncrement: false },\n storeSchema: [\n { name: 'method', keypath: 'method', options: { unique: true } },\n { name: 'data', keypath: 'data', options: { unique: false } },\n {\n name: 'specificHash',\n keypath: 'specificHash',\n options: { unique: false },\n },\n {\n name: 'length',\n keypath: 'length',\n options: { unique: false },\n },\n ],\n },\n ],\n};\n\n@NgModule({\n declarations: [],\n imports: [NgxIndexedDBModule.forRoot(dbConfig)],\n exports: [NgxIndexedDBModule],\n})\nexport class ActiveConnectNg2Module {}\n","export class JsonParser {\r\n static stringify(obj: any) {\r\n return JSON.stringify(obj);\r\n }\r\n\r\n static parsingFunction(key: any, value: any) {\r\n var a;\r\n if (typeof value === \"string\") {\r\n a =\r\n /^[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}T[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\.[0-9]{3}Z$/.exec(\r\n value\r\n );\r\n if (a) {\r\n return new Date(a as any);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n static parse(str: string) {\r\n if (str && str != \"undefined\") {\r\n return JSON.parse(str, JsonParser.parsingFunction);\r\n }\r\n return str;\r\n }\r\n}\r\n","import { NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { DecorableFunction } from './decorators/function';\r\nimport { JsonParser } from './json/json-parser';\r\n\r\nexport class WebsocketClient {\r\n ws!: WebSocket;\r\n pool!: { WssConnected: boolean } | null;\r\n\r\n constructor(\r\n private url?: string,\r\n private supportsCache?: boolean,\r\n public dbService?: NgxIndexedDBService\r\n ) {\r\n if (supportsCache) this.initCache();\r\n if (!url) {\r\n let protocol;\r\n let port;\r\n switch (document.location.protocol) {\r\n case 'https:': {\r\n protocol = 'wss:';\r\n port = ':443';\r\n break;\r\n }\r\n default: {\r\n protocol = 'ws:';\r\n port = ':80';\r\n break;\r\n }\r\n }\r\n this.url = protocol + '//' + document.location.hostname + port + '/wss';\r\n }\r\n this.connect(this.url as string);\r\n }\r\n\r\n subject: any;\r\n\r\n private connect(url: string) {\r\n if (!this.subject) {\r\n this.create(url);\r\n }\r\n return this.subject;\r\n }\r\n\r\n private requestStack: any[] = [];\r\n\r\n private _token = '';\r\n public get Token(): string {\r\n if (!this._token) {\r\n if (window.localStorage)\r\n this._token = window.localStorage.getItem('token') || '';\r\n }\r\n return this._token;\r\n }\r\n public set Token(val: string) {\r\n this._token = val;\r\n if (window.localStorage) window.localStorage.setItem('token', val);\r\n }\r\n\r\n private set Connected(value: boolean) {\r\n if (value) {\r\n this.sendBrowserInfoToServer();\r\n\r\n this.auth(this.Token).then(() => {\r\n this.resetRequestedState();\r\n this.requestStack.forEach((e) => {\r\n this.sendToSocket(e.method, e.data);\r\n this.requestStack = this.requestStack.filter((e1) => e1 != e);\r\n });\r\n });\r\n }\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = value;\r\n }\r\n private static resetRequestedStateCallbacks: Function[] = [];\r\n private connectionEstablishedOnce: boolean = false;\r\n private resetRequestedState() {\r\n if (this.connectionEstablishedOnce) {\r\n // reset requested state for outbounds\r\n WebsocketClient.resetRequestedStateCallbacks.forEach((reset) => {\r\n reset();\r\n });\r\n } else {\r\n this.connectionEstablishedOnce = true;\r\n }\r\n }\r\n public static addResetRequestingStateCallback(callback: Function) {\r\n WebsocketClient.resetRequestedStateCallbacks.push(callback);\r\n }\r\n\r\n private create(url: string) {\r\n // create new connection\r\n this.ws = new WebSocket(url + (this.supportsCache ? '?cache=true' : ''));\r\n this.ws.onerror = (err) => {\r\n this.ws.close();\r\n console.log(err);\r\n };\r\n this.ws.onopen = () => {\r\n this.Connected = true;\r\n };\r\n this.ws.onmessage = (e) => {\r\n this.messageReceived(JsonParser.parse(e.data.toString()));\r\n };\r\n this.ws.onclose = () => {\r\n if (!this.closed) {\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = false;\r\n setTimeout(() => {\r\n this.connect(url);\r\n }, 1000);\r\n }\r\n };\r\n }\r\n\r\n private messageId: number = 0;\r\n protected sendToSocket(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ) {\r\n const messageId = ++this.messageId;\r\n if (this.ws.readyState != this.ws.OPEN) {\r\n if (!dontEnsureTransmission)\r\n this.requestStack.push({ method, data, messageId });\r\n else return false;\r\n } else {\r\n this.ws.send(JsonParser.stringify({ method, value: data, messageId }));\r\n }\r\n return messageId;\r\n }\r\n\r\n async auth(token: string): Promise<any> {\r\n return this.sendToSocket('auth.token', token);\r\n }\r\n\r\n public send(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ): Promise<any> {\r\n const messageId = this.sendToSocket(\r\n method,\r\n data,\r\n dontEnsureTransmission || false\r\n );\r\n if (messageId) {\r\n return this.expectMethod(`m.${method}`, messageId);\r\n } else {\r\n return new Promise((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n private expectedMethods: Map<string | number, Array<Function>> = new Map();\r\n private expectMethod(method: string, messageId?: number | null) {\r\n return new Promise((resolve) => {\r\n if (messageId) {\r\n this.expectedMethods.set(messageId, [resolve]);\r\n } else {\r\n if (this.expectedMethods.has(method)) {\r\n let arr = this.expectedMethods.get(method);\r\n (arr as Array<Function>).push(resolve);\r\n } else {\r\n this.expectedMethods.set(method, [resolve]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private messageReceived({\r\n method,\r\n value,\r\n messageId,\r\n specificHash,\r\n inserted,\r\n updated,\r\n deleted,\r\n length,\r\n }: {\r\n method: string;\r\n value: any;\r\n messageId: number | null;\r\n specificHash: number | null;\r\n inserted: any[] | null;\r\n updated: any[] | null;\r\n deleted: any[] | null;\r\n length: number | null;\r\n }) {\r\n if (method == '___cache') {\r\n this.handleOutboundCacheRequest(value);\r\n }\r\n if (messageId) {\r\n const callback = this.expectedMethods.get(messageId);\r\n if (callback) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n this.invokeSuccessHandlers(method);\r\n } else {\r\n const callback = this.expectedMethods.get(method);\r\n if (callback && callback.length > 0) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n } else {\r\n const out = WebsocketClient.outbounds.get(method);\r\n if (out) {\r\n out(value, specificHash, inserted, updated, deleted, length, this);\r\n }\r\n const handle = WebsocketClient.handles.get(method);\r\n if (handle) {\r\n (handle.Func as Function)(value);\r\n }\r\n }\r\n }\r\n } else {\r\n throw Error(\r\n 'No MessageId was provided, the connection is not supported.'\r\n );\r\n }\r\n }\r\n\r\n private handleOutboundCacheRequest(method: string) {\r\n if (this.dbService) {\r\n this.dbService.getByKey('outbound', method).subscribe((item: any) => {\r\n if (item) {\r\n this.send('___cache', {\r\n method,\r\n specificHash: item.specificHash || null,\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n specificHash: null,\r\n });\r\n }\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n specificHash: null,\r\n });\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n\r\n private static outbounds: Map<\r\n string,\r\n (\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n > = new Map();\r\n static expectOutbound(\r\n method: string,\r\n callback: (\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n ) {\r\n WebsocketClient.outbounds.set(method, callback);\r\n }\r\n\r\n private static handles: Map<string, DecorableFunction> = new Map();\r\n static registerHandle(method: string, callback: DecorableFunction) {\r\n WebsocketClient.handles.set(method, callback);\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (this.ws) return this.ws.readyState == WebSocket.OPEN;\r\n return true;\r\n }\r\n\r\n private sendBrowserInfoToServer() {\r\n // send browser / os information\r\n const browser = this.getBrowser();\r\n const os = this.getOS();\r\n this.send('___browser', {\r\n browser: `${browser.name} ${browser.version} ${os}`,\r\n });\r\n }\r\n\r\n public getBrowser(): { name: string; version: string } {\r\n // https://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/\r\n var ua = navigator.userAgent,\r\n tem,\r\n M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE ', version: tem[1] || '' };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) {\r\n return { name: 'Opera', version: tem[1] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return {\r\n name: M[0],\r\n version: M[1],\r\n };\r\n }\r\n\r\n public getOS(): string {\r\n var userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod'],\r\n os = null;\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS';\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS';\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows';\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android';\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux';\r\n }\r\n\r\n return os || '';\r\n }\r\n\r\n private static onSuccessHandlers: {\r\n callback: DecorableFunction;\r\n regexp: RegExp;\r\n }[] = [];\r\n public static onSuccess(callback: DecorableFunction, regexp: RegExp) {\r\n this.onSuccessHandlers.push({ callback, regexp });\r\n }\r\n\r\n private invokeSuccessHandlers(method: string) {\r\n WebsocketClient.onSuccessHandlers\r\n .filter((e) => e.regexp.test(method))\r\n .forEach((e) => {\r\n var res = (e.callback.Func as Function)();\r\n if (res && res.then) {\r\n res.then();\r\n }\r\n });\r\n }\r\n\r\n public closed = false;\r\n public disconnect(restart?: boolean) {\r\n if (!restart) this.closed = true;\r\n this.ws.close();\r\n }\r\n\r\n private initCache() {}\r\n}\r\n","/**\r\n * Represents the reference to an object method used for websocket routes and outbounds.\r\n */\r\nexport class DecorableFunction {\r\n /**\r\n * Creates an instance of DecorableFunction.\r\n * @param objConfig - The configuration object for the object method.\r\n * @param objConfig.target - The target object.\r\n * @param objConfig.propertyKey - The property key of the target object.\r\n */\r\n constructor(protected objConfig: { target: any; propertyKey: string }) {\r\n // singelton service - fetch from angular\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n if (!prototype.___constructorOverridden) {\r\n prototype.___constructorOverridden = true;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the decorated function.\r\n * @returns - The decorated function.\r\n */\r\n public get Func(): ((...data: any[]) => Promise<any> | any) | null {\r\n if (\r\n this.objConfig?.target &&\r\n this.objConfig.target[this.objConfig.propertyKey]\r\n ) {\r\n return this.objConfig.target[this.objConfig.propertyKey].bind(\r\n this.getBindObject()\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns the bind object.\r\n * @private\r\n * @returns - The bind object.\r\n */\r\n private getBindObject(): any {\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n return prototype.___data._obj;\r\n }\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function Handle(method: string) {\r\n return function _Handle(target: any, propertyKey: string): any {\r\n // method annotation\r\n WebsocketClient.registerHandle(\r\n method,\r\n new DecorableFunction({ target, propertyKey })\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function OnSuccess(regexp: RegExp) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n WebsocketClient.onSuccess(\r\n new DecorableFunction({ target, propertyKey }),\r\n regexp\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\n\r\nexport function Outbound(\r\n method: string,\r\n requestingRequired?: boolean,\r\n cached?: boolean,\r\n sortBy?: (a: any, b: any) => number\r\n) {\r\n return function _Outbound(target: any, propertyKey: string): any {\r\n target.loading = new Map<string, boolean>();\r\n // property annotation\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) {\r\n if (!target.___received) target.___received = {};\r\n if (!target.___data) target.___data = {};\r\n if (!target.___received) target.___received = {};\r\n if (!target.___requested) target.___requested = {};\r\n if (!cached) {\r\n if (_this.dbService)\r\n _this.dbService.deleteByKey('outbound', method).subscribe(() => {});\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_this.dbService) {\r\n _this.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = result.data;\r\n target.loading.set(propertyKey, false);\r\n });\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_this.dbService) {\r\n _this.dbService.deleteByKey('outbound', method).subscribe(() => {});\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n target.___received[propertyKey] = false;\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n } else if (data == 'data_delete') {\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n target.___received[propertyKey] = false;\r\n target.___requested[propertyKey] = false;\r\n } else if (data == 'data_diff') {\r\n var data = target.___data[propertyKey] || [];\r\n inserted?.forEach((e) => {\r\n const matching = data.filter((d: any) => d.id == e.id);\r\n if (matching.length > 0) {\r\n data[data.indexOf(matching[0])] = e;\r\n } else {\r\n data.push(e);\r\n }\r\n });\r\n updated?.forEach((e) => {\r\n const matching = data.filter((d: any) => d.id == e.id);\r\n if (matching.length > 0) {\r\n data[data.indexOf(matching[0])] = e;\r\n } else {\r\n data.push(e);\r\n }\r\n });\r\n deleted?.forEach((e) => {\r\n data = data.filter((d: any) => d.id != e.id);\r\n });\r\n if (sortBy && data) data = data.sort(sortBy);\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n\r\n if (cached && specificHash) {\r\n if (_this.dbService) {\r\n if (data && data?.length > 0) {\r\n _this.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _this.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n } else {\r\n if (sortBy && data) data = data.sort(sortBy);\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n if (cached && specificHash) {\r\n if (_this.dbService) {\r\n if (data && data?.length > 0) {\r\n _this.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _this.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n }\r\n );\r\n if (requestingRequired) {\r\n WebsocketClient.addResetRequestingStateCallback(function callback() {\r\n if (target.___requested) {\r\n target.___requested[propertyKey] = false;\r\n }\r\n });\r\n }\r\n\r\n const obj = {\r\n configurable: true,\r\n get() {\r\n if (!target.___requested) target.___requested = {};\r\n if (requestingRequired && !target.___requested[propertyKey]) {\r\n target.___requested[propertyKey] = true;\r\n (this as any).send('request.' + method, null).then();\r\n }\r\n if (!target.___data) target.___data = {};\r\n if (!target.___data[propertyKey]) {\r\n target.loading.set(propertyKey, true);\r\n } else if (target.loading[propertyKey]) {\r\n target.loading.set(propertyKey, false);\r\n }\r\n return target.___data[propertyKey];\r\n },\r\n set(val: any) {\r\n if (!target.___data) target.___data = {};\r\n target.loading.set(propertyKey, false);\r\n if (sortBy && val) val = val.sort(sortBy);\r\n return (target.___data[propertyKey] = val);\r\n },\r\n };\r\n target[propertyKey] = obj;\r\n return obj;\r\n };\r\n}\r\n","export function Route(\r\n method: string,\r\n loadingKey?: string,\r\n dontEnsureTransmission?: boolean\r\n) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n // method annotation\r\n const original = target[propertyKey];\r\n target[propertyKey] = async function execRoute(...data: any): Promise<any> {\r\n if (loadingKey) {\r\n if (!this.loadingElements[loadingKey]) {\r\n this.loadingElements[loadingKey] = 0;\r\n }\r\n this.loadingElements[loadingKey]++;\r\n }\r\n const promise = original.bind(this)(...data);\r\n let res = null;\r\n if (this.client) {\r\n res = await this.client.send(method, data[0], dontEnsureTransmission);\r\n }\r\n await promise;\r\n if (loadingKey) this.loadingElements[loadingKey]--;\r\n return res;\r\n };\r\n return target;\r\n };\r\n}\r\n","/**\r\n * @deprecated\r\n */\r\nexport function Shared<T>(defaultValue?: T) {\r\n if (defaultValue) {\r\n throw Error(\r\n \"Active-Connect/@Shared: defaultValue is no longer supported, please assign the value to the variable itself.\"\r\n );\r\n }\r\n return function _Shared(target: any, propertyKey: string) {};\r\n}\r\n","import { WebsocketClient } from '../client';\r\n\r\nexport class LoadingStatus extends WebsocketClient {\r\n private __proto__: any;\r\n static loading: Map<string, boolean>;\r\n get isLoading(): boolean {\r\n // return general loading\r\n let anyTrue = false;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n anyTrue ||= e;\r\n });\r\n if (!anyTrue) this.__proto__.loading.clear();\r\n return this.__proto__.loading.size > 0;\r\n }\r\n getLoadingMap(): Map<string, boolean> {\r\n return this.__proto__.loading;\r\n }\r\n\r\n get getCurrent(): number {\r\n let count = 0;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n if (e) count++;\r\n });\r\n if (count == 0) {\r\n this.__proto__.loading.clear();\r\n }\r\n return count;\r\n }\r\n get getTotal(): number {\r\n return this.__proto__.loading.size;\r\n }\r\n}\r\n","import { Observable, Observer } from 'rxjs';\r\nimport { WebsocketClient } from '../client';\r\n\r\nexport interface IdObject {\r\n id: number | null | undefined;\r\n}\r\n\r\nexport class OutboundObject<T extends IdObject> {\r\n private previouslyCachedCount: number | undefined;\r\n constructor(\r\n private client: WebsocketClient,\r\n private method: string,\r\n private lazyLoaded?: boolean,\r\n public readonly cached?: boolean,\r\n private initialLoadingCount?: number,\r\n private sortBy?: (a: T, b: T) => number\r\n ) {\r\n this.target.loading = new Map<string, boolean>();\r\n\r\n if (this.client.dbService) {\r\n this.client.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n if (result) {\r\n this.previouslyCachedCount = result.data?.length || null;\r\n }\r\n });\r\n }\r\n\r\n const _this = this;\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n specificHash: number | null,\r\n insertedOrGroupData: any[] | null,\r\n updatedOrGroupId: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _client: WebsocketClient\r\n ) {\r\n if (!cached) {\r\n if (_client.dbService)\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_client.dbService) {\r\n _client.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n _this.setData(result.data);\r\n if (result.length) _this._length = result.length;\r\n _this.loading = false;\r\n });\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_client.dbService) {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n _this.loading = false;\r\n _this.requested = false;\r\n } else if (data == 'data_delete') {\r\n _this.data = undefined;\r\n _this.dataMap = new Map();\r\n _this.requested = false;\r\n _this.loadedGroupData = null;\r\n _this.loadedGroupId = null;\r\n _this._length = undefined;\r\n _this.loading = false;\r\n } else if (data == 'data_group') {\r\n if (\r\n _this.requestedGroupId ==\r\n (updatedOrGroupId ? updatedOrGroupId[0] : 0)\r\n ) {\r\n _this.loadedGroupData = insertedOrGroupData;\r\n _this.loadedGroupId = updatedOrGroupId ? updatedOrGroupId[0] : 0;\r\n _this.loadedGroupChanged?.next(insertedOrGroupData as T[]);\r\n _this.loading = false;\r\n }\r\n } else if (data == 'data_id') {\r\n if (\r\n _this.requestedId == (updatedOrGroupId ? updatedOrGroupId[0] : 0)\r\n ) {\r\n _this.loadedIdData =\r\n (insertedOrGroupData?.length || 0) > 0\r\n ? (insertedOrGroupData as any[])[0]\r\n : null;\r\n _this.loadedId = updatedOrGroupId ? updatedOrGroupId[0] : 0;\r\n _this.loadedIdChanged?.next(_this.loadedIdData as T);\r\n _this.loading = false;\r\n }\r\n } else if (data == 'data_diff') {\r\n insertedOrGroupData?.forEach((e) => {\r\n _this.dataMap.set(e.id, e);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(e);\r\n }\r\n });\r\n updatedOrGroupId?.forEach((e) => {\r\n _this.dataMap.set(e.id, e);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(e);\r\n }\r\n });\r\n deleted?.forEach((e) => {\r\n _this.dataMap.delete(e.id);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(null as any);\r\n }\r\n });\r\n _this.data = Array.from(_this.dataMap.values());\r\n if (_this.data && _this.sortBy)\r\n _this.data = _this.data.sort(_this.sortBy);\r\n _this.loading = false;\r\n\r\n if (cached && specificHash) {\r\n if (_client.dbService) {\r\n if (_this.data && _this.data?.length > 0) {\r\n _client.dbService\r\n .update('outbound', {\r\n method,\r\n data: _this.data,\r\n specificHash,\r\n length,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n } else {\r\n _this.setData(data);\r\n if (_this.loadedId) {\r\n const loadedValue = _this.dataMap.get(_this.loadedId);\r\n if (loadedValue) {\r\n _this.loadedIdData = loadedValue;\r\n _this.loadedIdChanged?.next(_this.loadedIdData);\r\n }\r\n }\r\n _this.loading = false;\r\n if (cached && specificHash) {\r\n if (_client.dbService) {\r\n if (data && data?.length > 0) {\r\n _client.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n length,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n if (length) _this._length = length;\r\n }\r\n );\r\n\r\n WebsocketClient.addResetRequestingStateCallback(() => {\r\n this.afterServerReconnected();\r\n });\r\n }\r\n\r\n get target(): any {\r\n return (this.client as any).__proto__;\r\n }\r\n\r\n private dataMap: Map<number | null | undefined, T> = new Map();\r\n private data: T[] | undefined = undefined;\r\n\r\n public get(id: number): Observable<T> {\r\n if (this.requestedId == id && this.loadedObservable && this.loadedIdData) {\r\n if (this.loadedIdData)\r\n setTimeout(() => {\r\n if (this.loadedIdData) this.loadedIdChanged?.next(this.loadedIdData);\r\n }, 50);\r\n return this.loadedObservable;\r\n }\r\n\r\n if (this.requestedId != id || !this.loadedObservable) {\r\n this.loadedObservable = new Observable<T>((observer) => {\r\n this.loadedIdChanged = observer;\r\n });\r\n }\r\n new Promise<void>(async (resolve) => {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n if (this.data) {\r\n const res = this.dataMap.get(id);\r\n if (res) {\r\n this.loadedIdChanged?.next(res);\r\n resolve();\r\n return;\r\n }\r\n }\r\n if (this.loadedId == id) {\r\n this.loadedIdChanged?.next(this.loadedIdData as T);\r\n } else {\r\n await this.requestById(id);\r\n }\r\n resolve();\r\n }).then();\r\n return this.loadedObservable;\r\n }\r\n\r\n public getForGroup(groupId: number): Observable<T[]> {\r\n if (\r\n this.requestedGroupId == groupId &&\r\n this.loadedGroupObservable &&\r\n this.loadedGroupData\r\n ) {\r\n if (this.loadedGroupData)\r\n setTimeout(() => {\r\n if (this.loadedGroupData)\r\n this.loadedGroupChanged?.next(this.loadedGroupData);\r\n }, 50);\r\n return this.loadedGroupObservable;\r\n }\r\n\r\n if (this.requestedGroupId != groupId || !this.loadedGroupObservable) {\r\n this.loadedGroupObservable = new Observable<T[]>((observer) => {\r\n this.loadedGroupChanged = observer;\r\n });\r\n }\r\n new Promise<void>(async (resolve) => {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n if (this.loadedGroupId == groupId) {\r\n this.loadedGroupChanged?.next(this.loadedGroupData as T[]);\r\n } else {\r\n await this.requestForGroup(groupId);\r\n }\r\n resolve();\r\n }).then();\r\n\r\n return this.loadedGroupObservable;\r\n }\r\n\r\n public get all(): T[] | undefined {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n return this.data;\r\n }\r\n\r\n private requested: boolean = false;\r\n public async load(count?: number): Promise<void> {\r\n if (this.lazyLoaded) {\r\n const hasBeenRequestedBefore = this.requested;\r\n this._loading = true;\r\n if (!this.requested) {\r\n this.loading = true;\r\n }\r\n this.requested = true;\r\n await this.client.send('request.' + this.method, {\r\n count: hasBeenRequestedBefore\r\n ? this.data\r\n ? count || this.initialLoadingCount\r\n ? (count || (this.initialLoadingCount as number)) +\r\n this.loadedLength\r\n : undefined\r\n : undefined\r\n : this.previouslyCachedCount || (this.initialLoadingCount as number),\r\n loaded: this.loadedLength,\r\n });\r\n } else {\r\n throw Error(\r\n 'Active-Connect: Cannot run loading request as this outbound is not lazy-loaded.'\r\n );\r\n }\r\n }\r\n\r\n private _loading = false;\r\n private set loading(value: boolean) {\r\n this._loading = value;\r\n this.target.loading.set(this.method, value);\r\n }\r\n public get loading(): boolean {\r\n return this._loading;\r\n }\r\n public get loadedLength(): number {\r\n return this.data?.length || 0;\r\n }\r\n private _length: number | undefined = undefined;\r\n public get length(): number | undefined {\r\n return this._length;\r\n }\r\n\r\n private requestedId: number | null = null;\r\n private loadedObservable: Observable<T> | null = null;\r\n private loadedId: number | null = null;\r\n private loadedIdData: T | null = null;\r\n private loadedIdChanged: Observer<T> | null = null;\r\n private requestById(id: number): Promise<any> {\r\n this.loading = true;\r\n this.requestedId = id;\r\n return this.client.send('request.' + this.method, { id }) as Promise<any>;\r\n }\r\n\r\n private requestedGroupId: number | null = null;\r\n private loadedGroupObservable: Observable<T[]> | null = null;\r\n private loadedGroupId: number | null = null;\r\n private loadedGroupData: T[] | null = null;\r\n private loadedGroupChanged: Observer<T[]> | null = null;\r\n private requestForGroup(groupId: number): Promise<T[]> {\r\n this.loading = true;\r\n this.requestedGroupId = groupId;\r\n return this.client.send('request.' + this.method, { groupId });\r\n }\r\n\r\n private setData(data: T[] | { added: T[] | undefined; length: number }) {\r\n this.data = data as T[];\r\n if (this.data && this.sortBy) this.data = this.data.sort(this.sortBy);\r\n this._length = data.length;\r\n this.dataMap = new Map();\r\n this.data.forEach((d) => {\r\n this.dataMap.set(d.id, d);\r\n });\r\n }\r\n\r\n get isEmpty() {\r\n return this.data == undefined;\r\n }\r\n\r\n /**\r\n * The contained data can be modified within the callback method\r\n */\r\n public update(callback: (data: T[]) => void) {\r\n if (this.data) {\r\n const updateLengthVariable = this.data.length == this._length;\r\n const length = this.length;\r\n callback(this.data);\r\n this.setData(this.data);\r\n if (!updateLengthVariable) {\r\n this._length = length;\r\n }\r\n }\r\n }\r\n\r\n private afterServerReconnected() {\r\n if (this.requested) {\r\n this.requested = false;\r\n this.load().then();\r\n }\r\n if (this.loadedId) {\r\n this.loadedIdData = null;\r\n this.get(this.loadedId);\r\n }\r\n if (this.loadedGroupId) {\r\n this.loadedGroupData = null;\r\n this.getForGroup(this.loadedGroupId);\r\n }\r\n }\r\n}\r\n","/*\n * Public API Surface of active-connect-ng2\n */\n\nexport * from './lib/active-connect-ng2.module';\nexport * from './lib/websocket';\nexport { NgxIndexedDBService } from 'ngx-indexed-db';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"active-connect-ng2.mjs","sources":["../../../projects/active-connect-ng2/src/lib/active-connect-ng2.module.ts","../../../projects/active-connect-ng2/src/lib/websocket/json/json-parser.ts","../../../projects/active-connect-ng2/src/lib/websocket/client.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/function.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/handle.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/on-success.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/outbound.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/route.ts","../../../projects/active-connect-ng2/src/lib/websocket/decorators/websocket/shared.ts","../../../projects/active-connect-ng2/src/lib/websocket/lifecycle/loading-status.ts","../../../projects/active-connect-ng2/src/lib/websocket/objects/outbound-object.ts","../../../projects/active-connect-ng2/src/public-api.ts","../../../projects/active-connect-ng2/src/active-connect-ng2.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NgxIndexedDBModule, DBConfig } from 'ngx-indexed-db';\n\nconst dbConfig: DBConfig = {\n name: 'activeconnect_cache',\n version: 1,\n objectStoresMeta: [\n {\n store: 'outbound',\n storeConfig: { keyPath: 'method', autoIncrement: false },\n storeSchema: [\n { name: 'method', keypath: 'method', options: { unique: true } },\n { name: 'data', keypath: 'data', options: { unique: false } },\n {\n name: 'specificHash',\n keypath: 'specificHash',\n options: { unique: false },\n },\n {\n name: 'length',\n keypath: 'length',\n options: { unique: false },\n },\n ],\n },\n ],\n};\n\n@NgModule({\n declarations: [],\n imports: [NgxIndexedDBModule.forRoot(dbConfig)],\n exports: [NgxIndexedDBModule],\n})\nexport class ActiveConnectNg2Module {}\n","export class JsonParser {\r\n static stringify(obj: any) {\r\n return JSON.stringify(obj);\r\n }\r\n\r\n static parsingFunction(key: any, value: any) {\r\n var a;\r\n if (typeof value === \"string\") {\r\n a =\r\n /^[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}T[0-9]{2}\\:[0-9]{2}\\:[0-9]{2}\\.[0-9]{3}Z$/.exec(\r\n value\r\n );\r\n if (a) {\r\n return new Date(a as any);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n static parse(str: string) {\r\n if (str && str != \"undefined\") {\r\n return JSON.parse(str, JsonParser.parsingFunction);\r\n }\r\n return str;\r\n }\r\n}\r\n","import { NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { DecorableFunction } from './decorators/function';\r\nimport { JsonParser } from './json/json-parser';\r\n\r\nexport class WebsocketClient {\r\n ws!: WebSocket;\r\n pool!: { WssConnected: boolean } | null;\r\n\r\n constructor(\r\n private url?: string,\r\n private supportsCache?: boolean,\r\n public dbService?: NgxIndexedDBService\r\n ) {\r\n if (supportsCache) this.initCache();\r\n if (!url) {\r\n let protocol;\r\n let port;\r\n switch (document.location.protocol) {\r\n case 'https:': {\r\n protocol = 'wss:';\r\n port = ':443';\r\n break;\r\n }\r\n default: {\r\n protocol = 'ws:';\r\n port = ':80';\r\n break;\r\n }\r\n }\r\n this.url = protocol + '//' + document.location.hostname + port + '/wss';\r\n }\r\n this.connect(this.url as string);\r\n }\r\n\r\n subject: any;\r\n\r\n private connect(url: string) {\r\n if (!this.subject) {\r\n this.create(url);\r\n }\r\n return this.subject;\r\n }\r\n\r\n private requestStack: any[] = [];\r\n\r\n private _token = '';\r\n public get Token(): string {\r\n if (!this._token) {\r\n if (window.localStorage)\r\n this._token = window.localStorage.getItem('token') || '';\r\n }\r\n return this._token;\r\n }\r\n public set Token(val: string) {\r\n this._token = val;\r\n if (window.localStorage) window.localStorage.setItem('token', val);\r\n }\r\n\r\n private set Connected(value: boolean) {\r\n if (value) {\r\n this.sendBrowserInfoToServer();\r\n\r\n this.auth(this.Token).then(() => {\r\n this.resetRequestedState();\r\n this.requestStack.forEach((e) => {\r\n this.sendToSocket(e.method, e.data);\r\n this.requestStack = this.requestStack.filter((e1) => e1 != e);\r\n });\r\n });\r\n }\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = value;\r\n }\r\n private static resetRequestedStateCallbacks: Function[] = [];\r\n private connectionEstablishedOnce: boolean = false;\r\n private resetRequestedState() {\r\n if (this.connectionEstablishedOnce) {\r\n // reset requested state for outbounds\r\n WebsocketClient.resetRequestedStateCallbacks.forEach((reset) => {\r\n reset();\r\n });\r\n } else {\r\n this.connectionEstablishedOnce = true;\r\n }\r\n }\r\n public static addResetRequestingStateCallback(callback: Function) {\r\n WebsocketClient.resetRequestedStateCallbacks.push(callback);\r\n }\r\n\r\n private create(url: string) {\r\n // create new connection\r\n this.ws = new WebSocket(url + (this.supportsCache ? '?cache=true' : ''));\r\n this.ws.onerror = (err) => {\r\n this.ws.close();\r\n console.log(err);\r\n };\r\n this.ws.onopen = () => {\r\n this.Connected = true;\r\n };\r\n this.ws.onmessage = (e) => {\r\n this.messageReceived(JsonParser.parse(e.data.toString()));\r\n };\r\n this.ws.onclose = () => {\r\n if (!this.closed) {\r\n if (this.pool && this.pool.WssConnected) this.pool.WssConnected = false;\r\n setTimeout(() => {\r\n this.connect(url);\r\n }, 1000);\r\n }\r\n };\r\n }\r\n\r\n private messageId: number = 0;\r\n protected sendToSocket(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ) {\r\n const messageId = ++this.messageId;\r\n if (this.ws.readyState != this.ws.OPEN) {\r\n if (!dontEnsureTransmission)\r\n this.requestStack.push({ method, data, messageId });\r\n else return false;\r\n } else {\r\n this.ws.send(JsonParser.stringify({ method, value: data, messageId }));\r\n }\r\n return messageId;\r\n }\r\n\r\n async auth(token: string): Promise<any> {\r\n return this.sendToSocket('auth.token', token);\r\n }\r\n\r\n public send(\r\n method: string,\r\n data: any,\r\n dontEnsureTransmission?: boolean\r\n ): Promise<any> {\r\n const messageId = this.sendToSocket(\r\n method,\r\n data,\r\n dontEnsureTransmission || false\r\n );\r\n if (messageId) {\r\n return this.expectMethod(`m.${method}`, messageId);\r\n } else {\r\n return new Promise((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n }\r\n\r\n private expectedMethods: Map<string | number, Array<Function>> = new Map();\r\n private expectMethod(method: string, messageId?: number | null) {\r\n return new Promise((resolve) => {\r\n if (messageId) {\r\n this.expectedMethods.set(messageId, [resolve]);\r\n } else {\r\n if (this.expectedMethods.has(method)) {\r\n let arr = this.expectedMethods.get(method);\r\n (arr as Array<Function>).push(resolve);\r\n } else {\r\n this.expectedMethods.set(method, [resolve]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private messageReceived({\r\n method,\r\n value,\r\n messageId,\r\n specificHash,\r\n inserted,\r\n updated,\r\n deleted,\r\n length,\r\n }: {\r\n method: string;\r\n value: any;\r\n messageId: number | null;\r\n specificHash: number | null;\r\n inserted: any[] | null;\r\n updated: any[] | null;\r\n deleted: any[] | null;\r\n length: number | null;\r\n }) {\r\n if (method == '___cache') {\r\n this.handleOutboundCacheRequest(value);\r\n }\r\n if (messageId) {\r\n const callback = this.expectedMethods.get(messageId);\r\n if (callback) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n this.invokeSuccessHandlers(method);\r\n } else {\r\n const callback = this.expectedMethods.get(method);\r\n if (callback && callback.length > 0) {\r\n const func = callback.shift();\r\n if (func) func(value);\r\n } else {\r\n const out = WebsocketClient.outbounds.get(method);\r\n if (out) {\r\n out(value, specificHash, inserted, updated, deleted, length, this);\r\n }\r\n const handle = WebsocketClient.handles.get(method);\r\n if (handle) {\r\n (handle.Func as Function)(value);\r\n }\r\n }\r\n }\r\n } else {\r\n throw Error(\r\n 'No MessageId was provided, the connection is not supported.'\r\n );\r\n }\r\n }\r\n\r\n private handleOutboundCacheRequest(method: string) {\r\n if (this.dbService) {\r\n this.dbService.getByKey('outbound', method).subscribe((item: any) => {\r\n if (item) {\r\n this.send('___cache', {\r\n method,\r\n specificHash: item.specificHash || null,\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n specificHash: null,\r\n });\r\n }\r\n });\r\n } else {\r\n this.send('___cache', {\r\n method,\r\n specificHash: null,\r\n });\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n\r\n private static outbounds: Map<\r\n string,\r\n (\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n > = new Map();\r\n static expectOutbound(\r\n method: string,\r\n callback: (\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) => void\r\n ) {\r\n WebsocketClient.outbounds.set(method, callback);\r\n }\r\n\r\n private static handles: Map<string, DecorableFunction> = new Map();\r\n static registerHandle(method: string, callback: DecorableFunction) {\r\n WebsocketClient.handles.set(method, callback);\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (this.ws) return this.ws.readyState == WebSocket.OPEN;\r\n return true;\r\n }\r\n\r\n private sendBrowserInfoToServer() {\r\n // send browser / os information\r\n const browser = this.getBrowser();\r\n const os = this.getOS();\r\n this.send('___browser', {\r\n browser: `${browser.name} ${browser.version} ${os}`,\r\n });\r\n }\r\n\r\n public getBrowser(): { name: string; version: string } {\r\n // https://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/\r\n var ua = navigator.userAgent,\r\n tem,\r\n M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE ', version: tem[1] || '' };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\bOPR\\/(\\d+)/);\r\n if (tem != null) {\r\n return { name: 'Opera', version: tem[1] };\r\n }\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n return {\r\n name: M[0],\r\n version: M[1],\r\n };\r\n }\r\n\r\n public getOS(): string {\r\n var userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n iosPlatforms = ['iPhone', 'iPad', 'iPod'],\r\n os = null;\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'Mac OS';\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = 'iOS';\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows';\r\n } else if (/Android/.test(userAgent)) {\r\n os = 'Android';\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux';\r\n }\r\n\r\n return os || '';\r\n }\r\n\r\n private static onSuccessHandlers: {\r\n callback: DecorableFunction;\r\n regexp: RegExp;\r\n }[] = [];\r\n public static onSuccess(callback: DecorableFunction, regexp: RegExp) {\r\n this.onSuccessHandlers.push({ callback, regexp });\r\n }\r\n\r\n private invokeSuccessHandlers(method: string) {\r\n WebsocketClient.onSuccessHandlers\r\n .filter((e) => e.regexp.test(method))\r\n .forEach((e) => {\r\n var res = (e.callback.Func as Function)();\r\n if (res && res.then) {\r\n res.then();\r\n }\r\n });\r\n }\r\n\r\n public closed = false;\r\n public disconnect(restart?: boolean) {\r\n if (!restart) this.closed = true;\r\n this.ws.close();\r\n }\r\n\r\n private initCache() {}\r\n}\r\n","/**\r\n * Represents the reference to an object method used for websocket routes and outbounds.\r\n */\r\nexport class DecorableFunction {\r\n /**\r\n * Creates an instance of DecorableFunction.\r\n * @param objConfig - The configuration object for the object method.\r\n * @param objConfig.target - The target object.\r\n * @param objConfig.propertyKey - The property key of the target object.\r\n */\r\n constructor(protected objConfig: { target: any; propertyKey: string }) {\r\n // singelton service - fetch from angular\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n if (!prototype.___constructorOverridden) {\r\n prototype.___constructorOverridden = true;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the decorated function.\r\n * @returns - The decorated function.\r\n */\r\n public get Func(): ((...data: any[]) => Promise<any> | any) | null {\r\n if (\r\n this.objConfig?.target &&\r\n this.objConfig.target[this.objConfig.propertyKey]\r\n ) {\r\n return this.objConfig.target[this.objConfig.propertyKey].bind(\r\n this.getBindObject()\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns the bind object.\r\n * @private\r\n * @returns - The bind object.\r\n */\r\n private getBindObject(): any {\r\n const prototype = this.objConfig.target.prototype || this.objConfig.target;\r\n return prototype.___data._obj;\r\n }\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function Handle(method: string) {\r\n return function _Handle(target: any, propertyKey: string): any {\r\n // method annotation\r\n WebsocketClient.registerHandle(\r\n method,\r\n new DecorableFunction({ target, propertyKey })\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\nimport { DecorableFunction } from '../function';\r\n\r\nexport function OnSuccess(regexp: RegExp) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n WebsocketClient.onSuccess(\r\n new DecorableFunction({ target, propertyKey }),\r\n regexp\r\n );\r\n };\r\n}\r\n","import { WebsocketClient } from '../../client';\r\n\r\nexport function Outbound(\r\n method: string,\r\n requestingRequired?: boolean,\r\n cached?: boolean,\r\n sortBy?: (a: any, b: any) => number\r\n) {\r\n return function _Outbound(target: any, propertyKey: string): any {\r\n target.loading = new Map<string, boolean>();\r\n // property annotation\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n specificHash: number | null,\r\n inserted: any[] | null,\r\n updated: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _this: WebsocketClient\r\n ) {\r\n if (!target.___received) target.___received = {};\r\n if (!target.___data) target.___data = {};\r\n if (!target.___received) target.___received = {};\r\n if (!target.___requested) target.___requested = {};\r\n if (!cached) {\r\n if (_this.dbService)\r\n _this.dbService.deleteByKey('outbound', method).subscribe(() => {});\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_this.dbService) {\r\n _this.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = result.data;\r\n target.loading.set(propertyKey, false);\r\n });\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_this.dbService) {\r\n _this.dbService.deleteByKey('outbound', method).subscribe(() => {});\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n target.___received[propertyKey] = false;\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n } else if (data == 'data_delete') {\r\n target.___data[propertyKey] = undefined;\r\n target.loading.set(propertyKey, false);\r\n target.___received[propertyKey] = false;\r\n target.___requested[propertyKey] = false;\r\n } else if (data == 'data_diff') {\r\n var data = target.___data[propertyKey] || [];\r\n inserted?.forEach((e) => {\r\n const matching = data.filter((d: any) => d.id == e.id);\r\n if (matching.length > 0) {\r\n data[data.indexOf(matching[0])] = e;\r\n } else {\r\n data.push(e);\r\n }\r\n });\r\n updated?.forEach((e) => {\r\n const matching = data.filter((d: any) => d.id == e.id);\r\n if (matching.length > 0) {\r\n data[data.indexOf(matching[0])] = e;\r\n } else {\r\n data.push(e);\r\n }\r\n });\r\n deleted?.forEach((e) => {\r\n data = data.filter((d: any) => d.id != e.id);\r\n });\r\n if (sortBy && data) data = data.sort(sortBy);\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n\r\n if (cached && specificHash) {\r\n if (_this.dbService) {\r\n if (data && data?.length > 0) {\r\n _this.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _this.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n } else {\r\n if (sortBy && data) data = data.sort(sortBy);\r\n target.___received[propertyKey] = true;\r\n target.___data[propertyKey] = data;\r\n target.loading.set(propertyKey, false);\r\n if (cached && specificHash) {\r\n if (_this.dbService) {\r\n if (data && data?.length > 0) {\r\n _this.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _this.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n }\r\n );\r\n if (requestingRequired) {\r\n WebsocketClient.addResetRequestingStateCallback(function callback() {\r\n if (target.___requested) {\r\n target.___requested[propertyKey] = false;\r\n }\r\n });\r\n }\r\n\r\n const obj = {\r\n configurable: true,\r\n get() {\r\n if (!target.___requested) target.___requested = {};\r\n if (requestingRequired && !target.___requested[propertyKey]) {\r\n target.___requested[propertyKey] = true;\r\n (this as any).send('request.' + method, null).then();\r\n }\r\n if (!target.___data) target.___data = {};\r\n if (!target.___data[propertyKey]) {\r\n target.loading.set(propertyKey, true);\r\n } else if (target.loading[propertyKey]) {\r\n target.loading.set(propertyKey, false);\r\n }\r\n return target.___data[propertyKey];\r\n },\r\n set(val: any) {\r\n if (!target.___data) target.___data = {};\r\n target.loading.set(propertyKey, false);\r\n if (sortBy && val) val = val.sort(sortBy);\r\n return (target.___data[propertyKey] = val);\r\n },\r\n };\r\n target[propertyKey] = obj;\r\n return obj;\r\n };\r\n}\r\n","export function Route(\r\n method: string,\r\n loadingKey?: string,\r\n dontEnsureTransmission?: boolean\r\n) {\r\n return function _Route(target: any, propertyKey: string): any {\r\n // method annotation\r\n const original = target[propertyKey];\r\n target[propertyKey] = async function execRoute(...data: any): Promise<any> {\r\n if (loadingKey) {\r\n if (!this.loadingElements[loadingKey]) {\r\n this.loadingElements[loadingKey] = 0;\r\n }\r\n this.loadingElements[loadingKey]++;\r\n }\r\n const promise = original.bind(this)(...data);\r\n let res = null;\r\n if (this.client) {\r\n res = await this.client.send(method, data[0], dontEnsureTransmission);\r\n }\r\n await promise;\r\n if (loadingKey) this.loadingElements[loadingKey]--;\r\n return res;\r\n };\r\n return target;\r\n };\r\n}\r\n","/**\r\n * @deprecated\r\n */\r\nexport function Shared<T>(defaultValue?: T) {\r\n if (defaultValue) {\r\n throw Error(\r\n \"Active-Connect/@Shared: defaultValue is no longer supported, please assign the value to the variable itself.\"\r\n );\r\n }\r\n return function _Shared(target: any, propertyKey: string) {};\r\n}\r\n","import { WebsocketClient } from '../client';\r\n\r\nexport class LoadingStatus extends WebsocketClient {\r\n private __proto__: any;\r\n static loading: Map<string, boolean>;\r\n get isLoading(): boolean {\r\n // return general loading\r\n let anyTrue = false;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n anyTrue ||= e;\r\n });\r\n if (!anyTrue) this.__proto__.loading.clear();\r\n return this.__proto__.loading.size > 0;\r\n }\r\n getLoadingMap(): Map<string, boolean> {\r\n return this.__proto__.loading;\r\n }\r\n\r\n get getCurrent(): number {\r\n let count = 0;\r\n this.__proto__.loading.forEach((e: boolean) => {\r\n if (e) count++;\r\n });\r\n if (count == 0) {\r\n this.__proto__.loading.clear();\r\n }\r\n return count;\r\n }\r\n get getTotal(): number {\r\n return this.__proto__.loading.size;\r\n }\r\n}\r\n","import { Observable, Observer } from 'rxjs';\r\nimport { WebsocketClient } from '../client';\r\n\r\nexport interface IdObject {\r\n id: number | null | undefined;\r\n}\r\n\r\nexport class OutboundObject<T extends IdObject> {\r\n private previouslyCachedCount: number | undefined;\r\n constructor(\r\n private client: WebsocketClient,\r\n private method: string,\r\n private lazyLoaded?: boolean,\r\n public readonly cached?: boolean,\r\n private initialLoadingCount?: number,\r\n private sortBy?: (a: T, b: T) => number\r\n ) {\r\n this.target.loading = new Map<string, boolean>();\r\n\r\n if (this.client.dbService) {\r\n this.client.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n if (result) {\r\n this.previouslyCachedCount = result.data?.length || null;\r\n }\r\n });\r\n }\r\n\r\n const _this = this;\r\n WebsocketClient.expectOutbound(\r\n method,\r\n function setOutbound(\r\n data: any,\r\n specificHash: number | null,\r\n insertedOrGroupData: any[] | null,\r\n updatedOrGroupId: any[] | null,\r\n deleted: any[] | null,\r\n length: number | null,\r\n _client: WebsocketClient\r\n ) {\r\n if (!cached) {\r\n if (_client.dbService)\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n\r\n if (data == 'cache_restore') {\r\n if (_client.dbService) {\r\n _client.dbService\r\n .getByKey('outbound', method)\r\n .subscribe((result: any) => {\r\n _this.setData(result.data);\r\n if (result.length) _this._length = result.length;\r\n _this.loading = false;\r\n });\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n } else if (data == 'cache_delete') {\r\n if (_client.dbService) {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n } else {\r\n console.error(\r\n 'Active - Connect: Caching / restore not possible as the indexedDB is not accessible'\r\n );\r\n }\r\n _this.loading = false;\r\n _this.requested = false;\r\n } else if (data == 'data_delete') {\r\n _this.data = undefined;\r\n _this.dataMap = new Map();\r\n _this.requested = false;\r\n _this.loadedGroupData = null;\r\n _this.loadedGroupId = null;\r\n _this._length = undefined;\r\n _this.loading = false;\r\n } else if (data == 'data_group') {\r\n if (\r\n _this.requestedGroupId ==\r\n (updatedOrGroupId ? updatedOrGroupId[0] : 0)\r\n ) {\r\n _this.loadedGroupData = insertedOrGroupData;\r\n _this.loadedGroupId = updatedOrGroupId ? updatedOrGroupId[0] : 0;\r\n _this.loadedGroupChanged?.next(insertedOrGroupData as T[]);\r\n _this.loading = false;\r\n }\r\n } else if (data == 'data_id') {\r\n if (\r\n _this.requestedId == (updatedOrGroupId ? updatedOrGroupId[0] : 0)\r\n ) {\r\n _this.loadedIdData =\r\n (insertedOrGroupData?.length || 0) > 0\r\n ? (insertedOrGroupData as any[])[0]\r\n : null;\r\n _this.loadedId = updatedOrGroupId ? updatedOrGroupId[0] : 0;\r\n _this.loadedIdChanged?.next(_this.loadedIdData as T);\r\n _this.loading = false;\r\n }\r\n } else if (data == 'data_diff') {\r\n insertedOrGroupData?.forEach((e) => {\r\n _this.dataMap.set(e.id, e);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(e);\r\n }\r\n });\r\n updatedOrGroupId?.forEach((e) => {\r\n _this.dataMap.set(e.id, e);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(e);\r\n }\r\n });\r\n deleted?.forEach((e) => {\r\n _this.dataMap.delete(e.id);\r\n if (e.id == _this.loadedId) {\r\n _this.loadedIdChanged?.next(null as any);\r\n }\r\n });\r\n _this.data = Array.from(_this.dataMap.values());\r\n if (_this.data && _this.sortBy)\r\n _this.data = _this.data.sort(_this.sortBy);\r\n _this.loading = false;\r\n\r\n if (cached && specificHash) {\r\n if (_client.dbService) {\r\n if (_this.data && _this.data?.length > 0) {\r\n _client.dbService\r\n .update('outbound', {\r\n method,\r\n data: _this.data,\r\n specificHash,\r\n length,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n } else {\r\n _this.setData(data);\r\n if (_this.loadedId) {\r\n const loadedValue = _this.dataMap.get(_this.loadedId);\r\n if (loadedValue) {\r\n _this.loadedIdData = loadedValue;\r\n _this.loadedIdChanged?.next(_this.loadedIdData);\r\n }\r\n }\r\n _this.loading = false;\r\n if (cached && specificHash) {\r\n if (_client.dbService) {\r\n if (data && data?.length > 0) {\r\n _client.dbService\r\n .update('outbound', {\r\n method,\r\n data,\r\n specificHash,\r\n length,\r\n })\r\n .subscribe(() => {});\r\n } else {\r\n _client.dbService\r\n .deleteByKey('outbound', method)\r\n .subscribe(() => {});\r\n }\r\n } else {\r\n console.error(\r\n 'Active-Connect: Caching not possible as the indexedDB has not been initialized'\r\n );\r\n }\r\n }\r\n }\r\n if (length) _this._length = length;\r\n }\r\n );\r\n\r\n WebsocketClient.addResetRequestingStateCallback(() => {\r\n this.afterServerReconnected();\r\n });\r\n }\r\n\r\n get target(): any {\r\n return (this.client as any).__proto__;\r\n }\r\n\r\n private dataMap: Map<number | null | undefined, T> = new Map();\r\n private data: T[] | undefined = undefined;\r\n\r\n public get(id: number): Observable<T> {\r\n if (this.requestedId == id && this.loadedObservable && this.loadedIdData) {\r\n if (this.loadedIdData)\r\n setTimeout(() => {\r\n if (this.loadedIdData) this.loadedIdChanged?.next(this.loadedIdData);\r\n }, 50);\r\n return this.loadedObservable;\r\n }\r\n\r\n if (this.requestedId != id || !this.loadedObservable) {\r\n this.loadedObservable = new Observable<T>((observer) => {\r\n this.loadedIdChanged = observer;\r\n });\r\n }\r\n new Promise<void>(async (resolve) => {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n if (this.data) {\r\n const res = this.dataMap.get(id);\r\n if (res) {\r\n this.loadedIdChanged?.next(res);\r\n resolve();\r\n return;\r\n }\r\n }\r\n if (this.loadedId == id) {\r\n this.loadedIdChanged?.next(this.loadedIdData as T);\r\n } else {\r\n await this.requestById(id);\r\n }\r\n resolve();\r\n }).then();\r\n return this.loadedObservable;\r\n }\r\n\r\n public getForGroup(groupId: number): Observable<T[]> {\r\n if (\r\n this.requestedGroupId == groupId &&\r\n this.loadedGroupObservable &&\r\n this.loadedGroupData\r\n ) {\r\n setTimeout(() => {\r\n if (this.loadedGroupData)\r\n this.loadedGroupChanged?.next(this.loadedGroupData);\r\n }, 50);\r\n return this.loadedGroupObservable;\r\n }\r\n\r\n if (this.requestedGroupId != groupId || !this.loadedGroupObservable) {\r\n this.loadedGroupObservable = new Observable<T[]>((observer) => {\r\n this.loadedGroupChanged = observer;\r\n });\r\n }\r\n new Promise<void>(async (resolve) => {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n if (this.loadedGroupId == groupId && this.loadedGroupData) {\r\n this.loadedGroupChanged?.next(this.loadedGroupData as T[]);\r\n } else {\r\n await this.requestForGroup(groupId);\r\n }\r\n resolve();\r\n }).then();\r\n\r\n return this.loadedGroupObservable;\r\n }\r\n\r\n public get all(): T[] | undefined {\r\n if (!this.requested && this.lazyLoaded) {\r\n this.load().then();\r\n }\r\n return this.data;\r\n }\r\n\r\n private requested: boolean = false;\r\n public async load(count?: number): Promise<void> {\r\n if (this.lazyLoaded) {\r\n const hasBeenRequestedBefore = this.requested;\r\n this._loading = true;\r\n if (!this.requested) {\r\n this.loading = true;\r\n }\r\n this.requested = true;\r\n await this.client.send('request.' + this.method, {\r\n count: hasBeenRequestedBefore\r\n ? this.data\r\n ? count || this.initialLoadingCount\r\n ? (count || (this.initialLoadingCount as number)) +\r\n this.loadedLength\r\n : undefined\r\n : undefined\r\n : this.previouslyCachedCount || (this.initialLoadingCount as number),\r\n loaded: this.loadedLength,\r\n });\r\n } else {\r\n throw Error(\r\n 'Active-Connect: Cannot run loading request as this outbound is not lazy-loaded.'\r\n );\r\n }\r\n }\r\n\r\n private _loading = false;\r\n private set loading(value: boolean) {\r\n this._loading = value;\r\n this.target.loading.set(this.method, value);\r\n }\r\n public get loading(): boolean {\r\n return this._loading;\r\n }\r\n public get loadedLength(): number {\r\n return this.data?.length || 0;\r\n }\r\n private _length: number | undefined = undefined;\r\n public get length(): number | undefined {\r\n return this._length;\r\n }\r\n\r\n private requestedId: number | null = null;\r\n private loadedObservable: Observable<T> | null = null;\r\n private loadedId: number | null = null;\r\n private loadedIdData: T | null = null;\r\n private loadedIdChanged: Observer<T> | null = null;\r\n private requestById(id: number): Promise<any> {\r\n this.loading = true;\r\n this.requestedId = id;\r\n return this.client.send('request.' + this.method, { id }) as Promise<any>;\r\n }\r\n\r\n private requestedGroupId: number | null = null;\r\n private loadedGroupObservable: Observable<T[]> | null = null;\r\n private loadedGroupId: number | null = null;\r\n private loadedGroupData: T[] | null = null;\r\n private loadedGroupChanged: Observer<T[]> | null = null;\r\n private requestForGroup(groupId: number): Promise<T[]> {\r\n this.loading = true;\r\n this.requestedGroupId = groupId;\r\n return this.client.send('request.' + this.method, { groupId });\r\n }\r\n\r\n private setData(data: T[] | { added: T[] | undefined; length: number }) {\r\n this.data = data as T[];\r\n if (this.data && this.sortBy) this.data = this.data.sort(this.sortBy);\r\n this._length = data.length;\r\n this.dataMap = new Map();\r\n this.data.forEach((d) => {\r\n this.dataMap.set(d.id, d);\r\n });\r\n }\r\n\r\n get isEmpty() {\r\n return this.data == undefined;\r\n }\r\n\r\n /**\r\n * The contained data can be modified within the callback method\r\n */\r\n public update(callback: (data: T[]) => void) {\r\n if (this.data) {\r\n const updateLengthVariable = this.data.length == this._length;\r\n const length = this.length;\r\n callback(this.data);\r\n this.setData(this.data);\r\n if (!updateLengthVariable) {\r\n this._length = length;\r\n }\r\n }\r\n }\r\n\r\n private afterServerReconnected() {\r\n if (this.requested && this.lazyLoaded) {\r\n this.requested = false;\r\n this.load(1).then();\r\n }\r\n if (this.loadedId) {\r\n this.loadedIdData = null;\r\n this.get(this.loadedId);\r\n }\r\n if (this.loadedGroupId) {\r\n this.loadedGroupData = null;\r\n this.getForGroup(this.loadedGroupId);\r\n }\r\n }\r\n}\r\n","/*\n * Public API Surface of active-connect-ng2\n */\n\nexport * from './lib/active-connect-ng2.module';\nexport * from './lib/websocket';\nexport { NgxIndexedDBService } from 'ngx-indexed-db';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|