@hivegpt/hiveai-angular 0.0.355 → 0.0.360
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -24
- package/bundles/hivegpt-hiveai-angular.umd.js +3083 -2779
- package/bundles/hivegpt-hiveai-angular.umd.js.map +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js.map +1 -1
- package/environments/environment.d.ts +14 -14
- package/environments/environment.d.ts.map +1 -1
- package/esm2015/environments/environment.js +15 -15
- package/esm2015/hivegpt-hiveai-angular.js +13 -12
- package/esm2015/lib/components/NotificationSocket.js +39 -39
- package/esm2015/lib/components/bot-html-editor/bot-html-editor.component.js +112 -112
- package/esm2015/lib/components/bot.service.js +50 -50
- package/esm2015/lib/components/chat-drawer/chat-drawer.component.js +1747 -1728
- package/esm2015/lib/components/chatbot/chatbot.component.js +50 -50
- package/esm2015/lib/components/conversation.service.js +49 -49
- package/esm2015/lib/components/socket-service.service.js +72 -72
- package/esm2015/lib/components/translations/translation.service.js +219 -0
- package/esm2015/lib/components/video-player/video-player.component.js +123 -123
- package/esm2015/lib/hivegpt.module.js +21 -21
- package/esm2015/lib/models/video.js +2 -2
- package/esm2015/lib/pipes/safe-html.pipe.js +19 -19
- package/esm2015/lib/utils/utils.js +36 -36
- package/esm2015/public-api.js +7 -7
- package/fesm2015/hivegpt-hiveai-angular.js +2480 -2243
- package/fesm2015/hivegpt-hiveai-angular.js.map +1 -1
- package/hivegpt-hiveai-angular.d.ts +12 -11
- package/hivegpt-hiveai-angular.d.ts.map +1 -1
- package/hivegpt-hiveai-angular.metadata.json +1 -1
- package/lib/components/NotificationSocket.d.ts +4 -4
- package/lib/components/NotificationSocket.d.ts.map +1 -1
- package/lib/components/bot-html-editor/bot-html-editor.component.d.ts +35 -35
- package/lib/components/bot-html-editor/bot-html-editor.component.d.ts.map +1 -1
- package/lib/components/bot.service.d.ts +11 -11
- package/lib/components/bot.service.d.ts.map +1 -1
- package/lib/components/chat-drawer/chat-drawer.component.d.ts +254 -250
- package/lib/components/chat-drawer/chat-drawer.component.d.ts.map +1 -1
- package/lib/components/chatbot/chatbot.component.d.ts +35 -35
- package/lib/components/chatbot/chatbot.component.d.ts.map +1 -1
- package/lib/components/conversation.service.d.ts +12 -12
- package/lib/components/conversation.service.d.ts.map +1 -1
- package/lib/components/socket-service.service.d.ts +19 -19
- package/lib/components/socket-service.service.d.ts.map +1 -1
- package/lib/components/translations/translation.service.d.ts +8 -0
- package/lib/components/translations/translation.service.d.ts.map +1 -0
- package/lib/components/video-player/video-player.component.d.ts +35 -35
- package/lib/components/video-player/video-player.component.d.ts.map +1 -1
- package/lib/hivegpt.module.d.ts +2 -2
- package/lib/hivegpt.module.d.ts.map +1 -1
- package/lib/models/video.d.ts +34 -34
- package/lib/models/video.d.ts.map +1 -1
- package/lib/pipes/safe-html.pipe.d.ts +7 -7
- package/lib/pipes/safe-html.pipe.d.ts.map +1 -1
- package/lib/utils/utils.d.ts +2 -2
- package/lib/utils/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +3 -3
- package/public-api.d.ts.map +1 -1
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
export class ChatBotComponent {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.visible = false;
|
|
5
|
-
}
|
|
6
|
-
toggle() {
|
|
7
|
-
this.visible = !this.visible;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
ChatBotComponent.decorators = [
|
|
11
|
-
{ type: Component, args: [{
|
|
12
|
-
selector: 'hivegpt-chatbot',
|
|
13
|
-
template: "<button mat-icon-button class=\"chat-button\" color=\"primary\" (click)=\"toggle()\">\
|
|
14
|
-
styles: ["::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#e5ccbc}.spinner{align-items:center;display:flex;gap:2px;justify-content:center}.spinner>div{animation:bouncedelay 1.4s ease-in-out infinite;animation-fill-mode:both;background-color:#173330;border-radius:100%;display:inline-block;height:5px;width:5px}.spinner .bounce1{animation-delay:-.32s}.spinner .bounce2{animation-delay:-.16s}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.chat-button{align-items:center;background:#17235b;border:#17235b;border-radius:50%;bottom:20px;color:#fff;display:inline-flex;font-size:24px;height:50px;justify-content:center;position:fixed;right:20px;width:50px}"]
|
|
15
|
-
},] }
|
|
16
|
-
];
|
|
17
|
-
ChatBotComponent.propDecorators = {
|
|
18
|
-
userId: [{ type: Input }],
|
|
19
|
-
apiKey: [{ type: Input }],
|
|
20
|
-
botName: [{ type: Input }],
|
|
21
|
-
botSkills: [{ type: Input }],
|
|
22
|
-
botId: [{ type: Input }],
|
|
23
|
-
closeButtonColor: [{ type: Input }],
|
|
24
|
-
gradientColors: [{ type: Input }],
|
|
25
|
-
greeting: [{ type: Input }],
|
|
26
|
-
sendButtonColor: [{ type: Input }],
|
|
27
|
-
useOpenAi: [{ type: Input }],
|
|
28
|
-
showClose: [{ type: Input }],
|
|
29
|
-
bgGradient: [{ type: Input }],
|
|
30
|
-
sendButtonTextColor: [{ type: Input }],
|
|
31
|
-
fullView: [{ type: Input }],
|
|
32
|
-
bgBubbleAi: [{ type: Input }],
|
|
33
|
-
bgBubbleUser: [{ type: Input }],
|
|
34
|
-
closeButtonbgColor: [{ type: Input }],
|
|
35
|
-
messageTextColorAi: [{ type: Input }],
|
|
36
|
-
messageTextColorUser: [{ type: Input }],
|
|
37
|
-
dateTimeColor: [{ type: Input }],
|
|
38
|
-
dateTextColor: [{ type: Input }],
|
|
39
|
-
formFieldBgColor: [{ type: Input }],
|
|
40
|
-
formFieldTextColor: [{ type: Input }],
|
|
41
|
-
thumbsUpMessage: [{ type: Input }],
|
|
42
|
-
thumbsDownMessages: [{ type: Input }],
|
|
43
|
-
timezone: [{ type: Input }],
|
|
44
|
-
eventName: [{ type: Input }],
|
|
45
|
-
credentials: [{ type: Input }],
|
|
46
|
-
unknownResponses: [{ type: Input }],
|
|
47
|
-
rules: [{ type: Input }],
|
|
48
|
-
eventId: [{ type: Input }]
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
export class ChatBotComponent {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.visible = false;
|
|
5
|
+
}
|
|
6
|
+
toggle() {
|
|
7
|
+
this.visible = !this.visible;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
ChatBotComponent.decorators = [
|
|
11
|
+
{ type: Component, args: [{
|
|
12
|
+
selector: 'hivegpt-chatbot',
|
|
13
|
+
template: "<button mat-icon-button class=\"chat-button\" color=\"primary\" (click)=\"toggle()\">\n <mat-icon>chat</mat-icon>\n</button>\n\n<ng-container *ngIf=\"visible\">\n <hivegpt-chat-drawer\n [apiKey]=\"apiKey\"\n [bgBubbleAi]=\"bgBubbleAi\"\n [bgBubbleUser]=\"bgBubbleUser\"\n [bgGradient]=\"bgGradient\"\n [botName]=\"botName\"\n [closeButtonbgColor]=\"closeButtonbgColor\"\n [closeButtonColor]=\"closeButtonColor\"\n [credentials]=\"credentials\"\n [dateTextColor]=\"dateTextColor\"\n [dateTimeColor]=\"dateTimeColor\"\n [eventId]=\"eventId\"\n [eventName]=\"eventName\"\n [formFieldBgColor]=\"formFieldBgColor\"\n [formFieldTextColor]=\"formFieldTextColor\"\n [fullView]=\"fullView\"\n [greeting]=\"greeting\"\n [gradientColors]=\"gradientColors\"\n [messageTextColorAi]=\"messageTextColorAi\"\n [messageTextColorUser]=\"messageTextColorUser\"\n [sendButtonColor]=\"sendButtonColor\"\n [sendButtonTextColor]=\"sendButtonTextColor\"\n [showClose]=\"showClose\"\n [thumbsDownMessages]=\"thumbsDownMessages\"\n [thumbsUpMessage]=\"thumbsUpMessage\"\n [unknownResponses]=\"unknownResponses\"\n [useOpenAi]=\"useOpenAi\"\n [userId]=\"userId\"\n [botId]=\"botId\"\n >\n </hivegpt-chat-drawer>\n</ng-container>\n",
|
|
14
|
+
styles: ["::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#e5ccbc}.spinner{align-items:center;display:flex;gap:2px;justify-content:center}.spinner>div{animation:bouncedelay 1.4s ease-in-out infinite;animation-fill-mode:both;background-color:#173330;border-radius:100%;display:inline-block;height:5px;width:5px}.spinner .bounce1{animation-delay:-.32s}.spinner .bounce2{animation-delay:-.16s}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.chat-button{align-items:center;background:#17235b;border:#17235b;border-radius:50%;bottom:20px;color:#fff;display:inline-flex;font-size:24px;height:50px;justify-content:center;position:fixed;right:20px;width:50px}"]
|
|
15
|
+
},] }
|
|
16
|
+
];
|
|
17
|
+
ChatBotComponent.propDecorators = {
|
|
18
|
+
userId: [{ type: Input }],
|
|
19
|
+
apiKey: [{ type: Input }],
|
|
20
|
+
botName: [{ type: Input }],
|
|
21
|
+
botSkills: [{ type: Input }],
|
|
22
|
+
botId: [{ type: Input }],
|
|
23
|
+
closeButtonColor: [{ type: Input }],
|
|
24
|
+
gradientColors: [{ type: Input }],
|
|
25
|
+
greeting: [{ type: Input }],
|
|
26
|
+
sendButtonColor: [{ type: Input }],
|
|
27
|
+
useOpenAi: [{ type: Input }],
|
|
28
|
+
showClose: [{ type: Input }],
|
|
29
|
+
bgGradient: [{ type: Input }],
|
|
30
|
+
sendButtonTextColor: [{ type: Input }],
|
|
31
|
+
fullView: [{ type: Input }],
|
|
32
|
+
bgBubbleAi: [{ type: Input }],
|
|
33
|
+
bgBubbleUser: [{ type: Input }],
|
|
34
|
+
closeButtonbgColor: [{ type: Input }],
|
|
35
|
+
messageTextColorAi: [{ type: Input }],
|
|
36
|
+
messageTextColorUser: [{ type: Input }],
|
|
37
|
+
dateTimeColor: [{ type: Input }],
|
|
38
|
+
dateTextColor: [{ type: Input }],
|
|
39
|
+
formFieldBgColor: [{ type: Input }],
|
|
40
|
+
formFieldTextColor: [{ type: Input }],
|
|
41
|
+
thumbsUpMessage: [{ type: Input }],
|
|
42
|
+
thumbsDownMessages: [{ type: Input }],
|
|
43
|
+
timezone: [{ type: Input }],
|
|
44
|
+
eventName: [{ type: Input }],
|
|
45
|
+
credentials: [{ type: Input }],
|
|
46
|
+
unknownResponses: [{ type: Input }],
|
|
47
|
+
rules: [{ type: Input }],
|
|
48
|
+
eventId: [{ type: Input }]
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdGJvdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3JvaGl0dGhha3VyL0Rlc2t0b3AvRnJlZWxhbmNlL0RhbHZpci9Qcm8tRXZlbnRzLUZyb250ZW5kL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jaGF0Ym90L2NoYXRib3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWpELE1BQU0sT0FBTyxnQkFBZ0I7SUFMN0I7UUFxQ0UsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUtsQixDQUFDO0lBSEMsTUFBTTtRQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQy9CLENBQUM7OztZQXpDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsK3RDQUF1Qzs7YUFFeEM7OztxQkFFRSxLQUFLO3FCQUNMLEtBQUs7c0JBQ0wsS0FBSzt3QkFDTCxLQUFLO29CQUNMLEtBQUs7K0JBQ0wsS0FBSzs2QkFDTCxLQUFLO3VCQUNMLEtBQUs7OEJBQ0wsS0FBSzt3QkFDTCxLQUFLO3dCQUNMLEtBQUs7eUJBQ0wsS0FBSztrQ0FDTCxLQUFLO3VCQUNMLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLO2lDQUNMLEtBQUs7aUNBQ0wsS0FBSzttQ0FDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzsrQkFDTCxLQUFLO2lDQUNMLEtBQUs7OEJBQ0wsS0FBSztpQ0FDTCxLQUFLO3VCQUNMLEtBQUs7d0JBQ0wsS0FBSzswQkFDTCxLQUFLOytCQUNMLEtBQUs7b0JBQ0wsS0FBSztzQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGl2ZWdwdC1jaGF0Ym90JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXRib3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGF0Ym90LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENoYXRCb3RDb21wb25lbnQge1xuICBASW5wdXQoKSB1c2VySWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwaUtleSE6IHN0cmluZztcbiAgQElucHV0KCkgYm90TmFtZSE6IHN0cmluZztcbiAgQElucHV0KCkgYm90U2tpbGxzITogc3RyaW5nO1xuICBASW5wdXQoKSBib3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY2xvc2VCdXR0b25Db2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZ3JhZGllbnRDb2xvcnMhOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgZ3JlZXRpbmchOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlbmRCdXR0b25Db2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgdXNlT3BlbkFpITogYm9vbGVhbjtcbiAgQElucHV0KCkgc2hvd0Nsb3NlITogYm9vbGVhbjtcbiAgQElucHV0KCkgYmdHcmFkaWVudCE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBzZW5kQnV0dG9uVGV4dENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBmdWxsVmlldyE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJnQnViYmxlQWkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJnQnViYmxlVXNlciE6IHN0cmluZztcbiAgQElucHV0KCkgY2xvc2VCdXR0b25iZ0NvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBtZXNzYWdlVGV4dENvbG9yQWkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1lc3NhZ2VUZXh0Q29sb3JVc2VyITogc3RyaW5nO1xuICBASW5wdXQoKSBkYXRlVGltZUNvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBkYXRlVGV4dENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBmb3JtRmllbGRCZ0NvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBmb3JtRmllbGRUZXh0Q29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRodW1ic1VwTWVzc2FnZSE6IHN0cmluZztcbiAgQElucHV0KCkgdGh1bWJzRG93bk1lc3NhZ2VzITogc3RyaW5nW107XG4gIEBJbnB1dCgpIHRpbWV6b25lITogc3RyaW5nO1xuICBASW5wdXQoKSBldmVudE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNyZWRlbnRpYWxzITogW107XG4gIEBJbnB1dCgpIHVua25vd25SZXNwb25zZXMhOiBbXTtcbiAgQElucHV0KCkgcnVsZXMhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGV2ZW50SWQhOiBzdHJpbmc7XG4gIHZpc2libGUgPSBmYWxzZTtcblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy52aXNpYmxlID0gIXRoaXMudmlzaWJsZTtcbiAgfVxufVxuIl19
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class ConversationService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.conversationStorageKeyPrefix = 'conversationKey_';
|
|
7
|
-
this.sessionStorageKeyPrefix = 'sessionKey_';
|
|
8
|
-
this.userSpecificNotification = new Subject();
|
|
9
|
-
}
|
|
10
|
-
generateKey() {
|
|
11
|
-
const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);
|
|
12
|
-
const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {
|
|
13
|
-
return Math.floor(Math.random() * 16).toString(16);
|
|
14
|
-
});
|
|
15
|
-
return timestamp + randomHex;
|
|
16
|
-
}
|
|
17
|
-
getKey(botId, resetKey = false) {
|
|
18
|
-
const storageKey = `${this.conversationStorageKeyPrefix}${botId}`;
|
|
19
|
-
let value = localStorage.getItem(storageKey);
|
|
20
|
-
if (!value || resetKey) {
|
|
21
|
-
value = this.generateKey();
|
|
22
|
-
localStorage.setItem(storageKey, value);
|
|
23
|
-
}
|
|
24
|
-
return value;
|
|
25
|
-
}
|
|
26
|
-
getSessionKey(sessionId, resetKey = false) {
|
|
27
|
-
const storageKey = `${this.sessionStorageKeyPrefix}${sessionId}`;
|
|
28
|
-
let value = localStorage.getItem(storageKey);
|
|
29
|
-
if (!value || resetKey) {
|
|
30
|
-
value = this.generateKey();
|
|
31
|
-
localStorage.setItem(storageKey, value);
|
|
32
|
-
}
|
|
33
|
-
return value;
|
|
34
|
-
}
|
|
35
|
-
sendValidatedUserData(message) {
|
|
36
|
-
this.userSpecificNotification.next(message);
|
|
37
|
-
}
|
|
38
|
-
getUserSpecificNotification() {
|
|
39
|
-
return this.userSpecificNotification.asObservable();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
ConversationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConversationService_Factory() { return new ConversationService(); }, token: ConversationService, providedIn: "root" });
|
|
43
|
-
ConversationService.decorators = [
|
|
44
|
-
{ type: Injectable, args: [{
|
|
45
|
-
providedIn: 'root',
|
|
46
|
-
},] }
|
|
47
|
-
];
|
|
48
|
-
ConversationService.ctorParameters = () => [];
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ConversationService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.conversationStorageKeyPrefix = 'conversationKey_';
|
|
7
|
+
this.sessionStorageKeyPrefix = 'sessionKey_';
|
|
8
|
+
this.userSpecificNotification = new Subject();
|
|
9
|
+
}
|
|
10
|
+
generateKey() {
|
|
11
|
+
const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);
|
|
12
|
+
const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {
|
|
13
|
+
return Math.floor(Math.random() * 16).toString(16);
|
|
14
|
+
});
|
|
15
|
+
return timestamp + randomHex;
|
|
16
|
+
}
|
|
17
|
+
getKey(botId, resetKey = false) {
|
|
18
|
+
const storageKey = `${this.conversationStorageKeyPrefix}${botId}`;
|
|
19
|
+
let value = localStorage.getItem(storageKey);
|
|
20
|
+
if (!value || resetKey) {
|
|
21
|
+
value = this.generateKey();
|
|
22
|
+
localStorage.setItem(storageKey, value);
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
getSessionKey(sessionId, resetKey = false) {
|
|
27
|
+
const storageKey = `${this.sessionStorageKeyPrefix}${sessionId}`;
|
|
28
|
+
let value = localStorage.getItem(storageKey);
|
|
29
|
+
if (!value || resetKey) {
|
|
30
|
+
value = this.generateKey();
|
|
31
|
+
localStorage.setItem(storageKey, value);
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
sendValidatedUserData(message) {
|
|
36
|
+
this.userSpecificNotification.next(message);
|
|
37
|
+
}
|
|
38
|
+
getUserSpecificNotification() {
|
|
39
|
+
return this.userSpecificNotification.asObservable();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
ConversationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConversationService_Factory() { return new ConversationService(); }, token: ConversationService, providedIn: "root" });
|
|
43
|
+
ConversationService.decorators = [
|
|
44
|
+
{ type: Injectable, args: [{
|
|
45
|
+
providedIn: 'root',
|
|
46
|
+
},] }
|
|
47
|
+
];
|
|
48
|
+
ConversationService.ctorParameters = () => [];
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3JvaGl0dGhha3VyL0Rlc2t0b3AvRnJlZWxhbmNlL0RhbHZpci9Qcm8tRXZlbnRzLUZyb250ZW5kL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jb252ZXJzYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxtQkFBbUI7SUFNOUI7UUFMUSxpQ0FBNEIsR0FBRyxrQkFBa0IsQ0FBQztRQUNsRCw0QkFBdUIsR0FBRyxhQUFhLENBQUM7UUFFeEMsNkJBQXdCLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7SUFFcEQsQ0FBQztJQUVqQixXQUFXO1FBQ1QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUN4RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWEsRUFBRSxXQUFvQixLQUFLO1FBQzdDLE1BQU0sVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2xFLElBQUksS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLEVBQUU7WUFDdEIsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGFBQWEsQ0FBQyxTQUFpQixFQUFFLFdBQW9CLEtBQUs7UUFDeEQsTUFBTSxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDakUsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRTtZQUN0QixLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNCLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQscUJBQXFCLENBQUMsT0FBWTtRQUNoQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEQsQ0FBQzs7OztZQWpERixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb252ZXJzYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb252ZXJzYXRpb25TdG9yYWdlS2V5UHJlZml4ID0gJ2NvbnZlcnNhdGlvbktleV8nO1xuICBwcml2YXRlIHNlc3Npb25TdG9yYWdlS2V5UHJlZml4ID0gJ3Nlc3Npb25LZXlfJztcblxuICBwcml2YXRlIHVzZXJTcGVjaWZpY05vdGlmaWNhdGlvbjogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgZ2VuZXJhdGVLZXkoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkudG9TdHJpbmcoMTYpO1xuICAgIGNvbnN0IHJhbmRvbUhleCA9ICd4eHh4eHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beF0vZywgKCkgPT4ge1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KS50b1N0cmluZygxNik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRpbWVzdGFtcCArIHJhbmRvbUhleDtcbiAgfVxuXG4gIGdldEtleShib3RJZDogc3RyaW5nLCByZXNldEtleTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdG9yYWdlS2V5ID0gYCR7dGhpcy5jb252ZXJzYXRpb25TdG9yYWdlS2V5UHJlZml4fSR7Ym90SWR9YDtcbiAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KTtcblxuICAgIGlmICghdmFsdWUgfHwgcmVzZXRLZXkpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5nZW5lcmF0ZUtleSgpO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGdldFNlc3Npb25LZXkoc2Vzc2lvbklkOiBzdHJpbmcsIHJlc2V0S2V5OiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBgJHt0aGlzLnNlc3Npb25TdG9yYWdlS2V5UHJlZml4fSR7c2Vzc2lvbklkfWA7XG4gICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmFnZUtleSk7XG5cbiAgICBpZiAoIXZhbHVlIHx8IHJlc2V0S2V5KSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZ2VuZXJhdGVLZXkoKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JhZ2VLZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzZW5kVmFsaWRhdGVkVXNlckRhdGEobWVzc2FnZTogYW55KSB7XG4gICAgdGhpcy51c2VyU3BlY2lmaWNOb3RpZmljYXRpb24ubmV4dChtZXNzYWdlKTtcbiAgfVxuXG4gIGdldFVzZXJTcGVjaWZpY05vdGlmaWNhdGlvbigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJTcGVjaWZpY05vdGlmaWNhdGlvbi5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ConversationService } from './conversation.service';
|
|
3
|
-
import { NotificationSocket } from './NotificationSocket';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "./conversation.service";
|
|
6
|
-
import * as i2 from "./NotificationSocket";
|
|
7
|
-
export class SocketService {
|
|
8
|
-
constructor(conversationService, notificationSocket) {
|
|
9
|
-
this.conversationService = conversationService;
|
|
10
|
-
this.notificationSocket = notificationSocket;
|
|
11
|
-
this.isCommonSocketInitialized = false;
|
|
12
|
-
this.isUserSpecificSocketInitialized = false;
|
|
13
|
-
this.isUserSpecificEventReleased = true;
|
|
14
|
-
this.messageQueue = [];
|
|
15
|
-
this.releaseInterval = 1000;
|
|
16
|
-
this.intervalSetup = false;
|
|
17
|
-
this.startReleasingMessages();
|
|
18
|
-
}
|
|
19
|
-
isSocketInitialized(isCommon) {
|
|
20
|
-
return isCommon
|
|
21
|
-
? this.isCommonSocketInitialized
|
|
22
|
-
: this.isUserSpecificSocketInitialized &&
|
|
23
|
-
!this.isUserSpecificEventReleased;
|
|
24
|
-
}
|
|
25
|
-
disconnectSocketConnection() {
|
|
26
|
-
this.notificationSocket.disconnect();
|
|
27
|
-
}
|
|
28
|
-
connectSocketConnection() {
|
|
29
|
-
this.notificationSocket.connect();
|
|
30
|
-
}
|
|
31
|
-
registerUserSpecificHiveSocket(botId, conversation_id, org_id) {
|
|
32
|
-
const commonNotification = 'commonNotification';
|
|
33
|
-
const groupId = `Hive_AI_Notifs_${botId}_${conversation_id}`;
|
|
34
|
-
const groupId_org = `Hive_AI_Notifs_${org_id}`;
|
|
35
|
-
// Remove any pre-existing listeners for commonNotification
|
|
36
|
-
// this.notificationSocket.removeAllListeners(commonNotification);
|
|
37
|
-
// Join the group again with updated botId and conversation_id
|
|
38
|
-
this.notificationSocket.emit('joinData', { groupId });
|
|
39
|
-
this.notificationSocket.emit('joinData', { groupId: groupId_org });
|
|
40
|
-
// Re-register for common notifications
|
|
41
|
-
this.notificationSocket.fromEvent(commonNotification).subscribe((res) => {
|
|
42
|
-
console.log('Received commonNotification:', res);
|
|
43
|
-
this.conversationService.sendValidatedUserData(res);
|
|
44
|
-
}, (error) => {
|
|
45
|
-
console.error('Error receiving commonNotification:', error);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
startReleasingMessages() {
|
|
49
|
-
if (!this.intervalSetup) {
|
|
50
|
-
setInterval(() => {
|
|
51
|
-
if (this.messageQueue.length > 0) {
|
|
52
|
-
const message = this.messageQueue.shift(); // Remove the first message from the queue
|
|
53
|
-
// Handle the message here, e.g., send it to the server or process it
|
|
54
|
-
console.log('Releasing message from queue:', message);
|
|
55
|
-
// this.campaignService.sendValidatedUserData(message);
|
|
56
|
-
}
|
|
57
|
-
}, this.releaseInterval);
|
|
58
|
-
this.intervalSetup = true; // Prevents multiple intervals
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
SocketService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SocketService_Factory() { return new SocketService(i0.ɵɵinject(i1.ConversationService), i0.ɵɵinject(i2.NotificationSocket)); }, token: SocketService, providedIn: "root" });
|
|
63
|
-
SocketService.decorators = [
|
|
64
|
-
{ type: Injectable, args: [{
|
|
65
|
-
providedIn: 'root',
|
|
66
|
-
},] }
|
|
67
|
-
];
|
|
68
|
-
SocketService.ctorParameters = () => [
|
|
69
|
-
{ type: ConversationService },
|
|
70
|
-
{ type: NotificationSocket }
|
|
71
|
-
];
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ConversationService } from './conversation.service';
|
|
3
|
+
import { NotificationSocket } from './NotificationSocket';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./conversation.service";
|
|
6
|
+
import * as i2 from "./NotificationSocket";
|
|
7
|
+
export class SocketService {
|
|
8
|
+
constructor(conversationService, notificationSocket) {
|
|
9
|
+
this.conversationService = conversationService;
|
|
10
|
+
this.notificationSocket = notificationSocket;
|
|
11
|
+
this.isCommonSocketInitialized = false;
|
|
12
|
+
this.isUserSpecificSocketInitialized = false;
|
|
13
|
+
this.isUserSpecificEventReleased = true;
|
|
14
|
+
this.messageQueue = [];
|
|
15
|
+
this.releaseInterval = 1000;
|
|
16
|
+
this.intervalSetup = false;
|
|
17
|
+
this.startReleasingMessages();
|
|
18
|
+
}
|
|
19
|
+
isSocketInitialized(isCommon) {
|
|
20
|
+
return isCommon
|
|
21
|
+
? this.isCommonSocketInitialized
|
|
22
|
+
: this.isUserSpecificSocketInitialized &&
|
|
23
|
+
!this.isUserSpecificEventReleased;
|
|
24
|
+
}
|
|
25
|
+
disconnectSocketConnection() {
|
|
26
|
+
this.notificationSocket.disconnect();
|
|
27
|
+
}
|
|
28
|
+
connectSocketConnection() {
|
|
29
|
+
this.notificationSocket.connect();
|
|
30
|
+
}
|
|
31
|
+
registerUserSpecificHiveSocket(botId, conversation_id, org_id) {
|
|
32
|
+
const commonNotification = 'commonNotification';
|
|
33
|
+
const groupId = `Hive_AI_Notifs_${botId}_${conversation_id}`;
|
|
34
|
+
const groupId_org = `Hive_AI_Notifs_${org_id}`;
|
|
35
|
+
// Remove any pre-existing listeners for commonNotification
|
|
36
|
+
// this.notificationSocket.removeAllListeners(commonNotification);
|
|
37
|
+
// Join the group again with updated botId and conversation_id
|
|
38
|
+
this.notificationSocket.emit('joinData', { groupId });
|
|
39
|
+
this.notificationSocket.emit('joinData', { groupId: groupId_org });
|
|
40
|
+
// Re-register for common notifications
|
|
41
|
+
this.notificationSocket.fromEvent(commonNotification).subscribe((res) => {
|
|
42
|
+
console.log('Received commonNotification:', res);
|
|
43
|
+
this.conversationService.sendValidatedUserData(res);
|
|
44
|
+
}, (error) => {
|
|
45
|
+
console.error('Error receiving commonNotification:', error);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
startReleasingMessages() {
|
|
49
|
+
if (!this.intervalSetup) {
|
|
50
|
+
setInterval(() => {
|
|
51
|
+
if (this.messageQueue.length > 0) {
|
|
52
|
+
const message = this.messageQueue.shift(); // Remove the first message from the queue
|
|
53
|
+
// Handle the message here, e.g., send it to the server or process it
|
|
54
|
+
console.log('Releasing message from queue:', message);
|
|
55
|
+
// this.campaignService.sendValidatedUserData(message);
|
|
56
|
+
}
|
|
57
|
+
}, this.releaseInterval);
|
|
58
|
+
this.intervalSetup = true; // Prevents multiple intervals
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
SocketService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SocketService_Factory() { return new SocketService(i0.ɵɵinject(i1.ConversationService), i0.ɵɵinject(i2.NotificationSocket)); }, token: SocketService, providedIn: "root" });
|
|
63
|
+
SocketService.decorators = [
|
|
64
|
+
{ type: Injectable, args: [{
|
|
65
|
+
providedIn: 'root',
|
|
66
|
+
},] }
|
|
67
|
+
];
|
|
68
|
+
SocketService.ctorParameters = () => [
|
|
69
|
+
{ type: ConversationService },
|
|
70
|
+
{ type: NotificationSocket }
|
|
71
|
+
];
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvcm9oaXR0aGFrdXIvRGVza3RvcC9GcmVlbGFuY2UvRGFsdmlyL1Byby1FdmVudHMtRnJvbnRlbmQvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3NvY2tldC1zZXJ2aWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQUsxRCxNQUFNLE9BQU8sYUFBYTtJQVN4QixZQUNVLG1CQUF3QyxFQUN4QyxrQkFBc0M7UUFEdEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBVHhDLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUNsQyxvQ0FBK0IsR0FBRyxLQUFLLENBQUM7UUFDeEMsZ0NBQTJCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBTXJDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxRQUFpQjtRQUNuQyxPQUFPLFFBQVE7WUFDYixDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QjtZQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLCtCQUErQjtnQkFDdEMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDdEMsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELHVCQUF1QjtRQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUNELDhCQUE4QixDQUFDLEtBQWEsRUFBRSxlQUF1QixFQUFFLE1BQWM7UUFDbkYsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztRQUNoRCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsS0FBSyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzdELE1BQU0sV0FBVyxHQUFHLGtCQUFrQixNQUFNLEVBQUUsQ0FBQztRQUUvQywyREFBMkQ7UUFDM0Qsa0VBQWtFO1FBRWxFLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVuRSx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FDN0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDZixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQztvQkFDckYscUVBQXFFO29CQUNyRSxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUN0RCx1REFBdUQ7aUJBQ3hEO1lBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLDhCQUE4QjtTQUMxRDtJQUNILENBQUM7Ozs7WUFwRUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFMUSxtQkFBbUI7WUFDbkIsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB3ZWJTb2NrZXQsIFdlYlNvY2tldFN1YmplY3QgfSBmcm9tICdyeGpzL3dlYlNvY2tldCc7XG5pbXBvcnQgeyBDb252ZXJzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9jb252ZXJzYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25Tb2NrZXQgfSBmcm9tICcuL05vdGlmaWNhdGlvblNvY2tldCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTb2NrZXRTZXJ2aWNlIHtcbiAgcHVibGljIHRlc3RNZXNzYWdlOiBzdHJpbmc7XG4gIHByaXZhdGUgaXNDb21tb25Tb2NrZXRJbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGlzVXNlclNwZWNpZmljU29ja2V0SW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1VzZXJTcGVjaWZpY0V2ZW50UmVsZWFzZWQgPSB0cnVlO1xuICBwcml2YXRlIG1lc3NhZ2VRdWV1ZTogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSByZWxlYXNlSW50ZXJ2YWwgPSAxMDAwO1xuICBwcml2YXRlIGludGVydmFsU2V0dXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnZlcnNhdGlvblNlcnZpY2U6IENvbnZlcnNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25Tb2NrZXQ6IE5vdGlmaWNhdGlvblNvY2tldFxuICApIHtcbiAgICB0aGlzLnN0YXJ0UmVsZWFzaW5nTWVzc2FnZXMoKTtcbiAgfVxuXG4gIGlzU29ja2V0SW5pdGlhbGl6ZWQoaXNDb21tb246IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gaXNDb21tb25cbiAgICAgID8gdGhpcy5pc0NvbW1vblNvY2tldEluaXRpYWxpemVkXG4gICAgICA6IHRoaXMuaXNVc2VyU3BlY2lmaWNTb2NrZXRJbml0aWFsaXplZCAmJlxuICAgICAgIXRoaXMuaXNVc2VyU3BlY2lmaWNFdmVudFJlbGVhc2VkO1xuICB9XG5cbiAgZGlzY29ubmVjdFNvY2tldENvbm5lY3Rpb24oKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25Tb2NrZXQuZGlzY29ubmVjdCgpO1xuICB9XG4gIGNvbm5lY3RTb2NrZXRDb25uZWN0aW9uKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU29ja2V0LmNvbm5lY3QoKTtcbiAgfVxuICByZWdpc3RlclVzZXJTcGVjaWZpY0hpdmVTb2NrZXQoYm90SWQ6IHN0cmluZywgY29udmVyc2F0aW9uX2lkOiBzdHJpbmcsIG9yZ19pZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY29tbW9uTm90aWZpY2F0aW9uID0gJ2NvbW1vbk5vdGlmaWNhdGlvbic7XG4gICAgY29uc3QgZ3JvdXBJZCA9IGBIaXZlX0FJX05vdGlmc18ke2JvdElkfV8ke2NvbnZlcnNhdGlvbl9pZH1gO1xuICAgIGNvbnN0IGdyb3VwSWRfb3JnID0gYEhpdmVfQUlfTm90aWZzXyR7b3JnX2lkfWA7XG5cbiAgICAvLyBSZW1vdmUgYW55IHByZS1leGlzdGluZyBsaXN0ZW5lcnMgZm9yIGNvbW1vbk5vdGlmaWNhdGlvblxuICAgIC8vIHRoaXMubm90aWZpY2F0aW9uU29ja2V0LnJlbW92ZUFsbExpc3RlbmVycyhjb21tb25Ob3RpZmljYXRpb24pO1xuXG4gICAgLy8gSm9pbiB0aGUgZ3JvdXAgYWdhaW4gd2l0aCB1cGRhdGVkIGJvdElkIGFuZCBjb252ZXJzYXRpb25faWRcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNvY2tldC5lbWl0KCdqb2luRGF0YScsIHsgZ3JvdXBJZCB9KTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNvY2tldC5lbWl0KCdqb2luRGF0YScsIHsgZ3JvdXBJZDogZ3JvdXBJZF9vcmcgfSk7XG5cbiAgICAvLyBSZS1yZWdpc3RlciBmb3IgY29tbW9uIG5vdGlmaWNhdGlvbnNcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNvY2tldC5mcm9tRXZlbnQoY29tbW9uTm90aWZpY2F0aW9uKS5zdWJzY3JpYmUoXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZCBjb21tb25Ob3RpZmljYXRpb246JywgcmVzKTtcbiAgICAgICAgdGhpcy5jb252ZXJzYXRpb25TZXJ2aWNlLnNlbmRWYWxpZGF0ZWRVc2VyRGF0YShyZXMpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZWNlaXZpbmcgY29tbW9uTm90aWZpY2F0aW9uOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFJlbGVhc2luZ01lc3NhZ2VzKCkge1xuICAgIGlmICghdGhpcy5pbnRlcnZhbFNldHVwKSB7XG4gICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VRdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubWVzc2FnZVF1ZXVlLnNoaWZ0KCk7IC8vIFJlbW92ZSB0aGUgZmlyc3QgbWVzc2FnZSBmcm9tIHRoZSBxdWV1ZVxuICAgICAgICAgIC8vIEhhbmRsZSB0aGUgbWVzc2FnZSBoZXJlLCBlLmcuLCBzZW5kIGl0IHRvIHRoZSBzZXJ2ZXIgb3IgcHJvY2VzcyBpdFxuICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWxlYXNpbmcgbWVzc2FnZSBmcm9tIHF1ZXVlOicsIG1lc3NhZ2UpO1xuICAgICAgICAgIC8vIHRoaXMuY2FtcGFpZ25TZXJ2aWNlLnNlbmRWYWxpZGF0ZWRVc2VyRGF0YShtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5yZWxlYXNlSW50ZXJ2YWwpO1xuICAgICAgdGhpcy5pbnRlcnZhbFNldHVwID0gdHJ1ZTsgLy8gUHJldmVudHMgbXVsdGlwbGUgaW50ZXJ2YWxzXG4gICAgfVxuICB9XG59XG4iXX0=
|