chat4app-client-angular 0.0.14 → 0.0.15
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/bundles/chat4app-client-angular.umd.js +8 -1
- package/bundles/chat4app-client-angular.umd.js.map +1 -1
- package/bundles/chat4app-client-angular.umd.min.js +1 -1
- package/bundles/chat4app-client-angular.umd.min.js.map +1 -1
- package/esm2015/lib/chat4app-client-angular.service.js +9 -2
- package/fesm2015/chat4app-client-angular.js +8 -1
- package/fesm2015/chat4app-client-angular.js.map +1 -1
- package/lib/chat4app-client-angular.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -329,7 +329,14 @@
|
|
|
329
329
|
this.stompClient.debug = function (msg) {
|
|
330
330
|
//console.log(msg);
|
|
331
331
|
};
|
|
332
|
-
|
|
332
|
+
var tokenAuth = "";
|
|
333
|
+
if (securityToken && securityToken.startsWith("Bearer ")) {
|
|
334
|
+
tokenAuth = securityToken;
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
tokenAuth = "Bearer " + securityToken;
|
|
338
|
+
}
|
|
339
|
+
this.stompClient.connect({ "X-Authorization": tokenAuth }, function (frame) {
|
|
333
340
|
//console.log(frame);
|
|
334
341
|
_this.stompClient.subscribe('/queue/' + token, function (msg) {
|
|
335
342
|
//console.log('mensagem', msg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat4app-client-angular.umd.js","sources":["../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.service.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.component.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.module.ts","../../../projects/chat4app-client-angular/src/public-api.ts","../../../projects/chat4app-client-angular/src/chat4app-client-angular.ts"],"sourcesContent":["import { Injectable, OnInit } from '@angular/core';\r\nimport * as Stomp from 'stompjs';\r\nimport * as SockJS from 'sockjs-client';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport * as moment from 'moment';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Chat4appClientAngularService implements OnInit {\r\n\r\n chatServer = \"\";\r\n chatUrl = \"\";\r\n \r\n sock: any;\r\n stompClient: any;\r\n\r\n constructor( private http: HttpClient) {\r\n \r\n }\r\n ngOnInit(): void {\r\n }\r\n\r\n config(chat4AppConfig: Chat4AppConfig) {\r\n this.chatServer = chat4AppConfig.endpoint;\r\n this.chatUrl = chat4AppConfig.endpoint + \"/api/v1/\" ;\r\n }\r\n \r\n init(securityChatToken: string, callback: any, chatCallback?: IChatCallback, connectionClientId?: string) {\r\n\r\n if (!this.chatServer || this.chatServer.trim().length == 0){\r\n throw new Error(\"Endpoint is empty\");\r\n }\r\n if (!securityChatToken || securityChatToken.trim().length == 0){\r\n throw new Error(\"SecurityChatToken is empty\");\r\n }\r\n\r\n this.setTokenChat4app(securityChatToken);\r\n \r\n if (chatCallback && connectionClientId) {\r\n this.connectWebsocket(chatCallback, connectionClientId);\r\n }\r\n \r\n callback(securityChatToken);\r\n }\r\n \r\n getChatUrlDownload(messageFileId: string) {\r\n return this.chatUrl + \"chatmessage/getFile?messageFileId=\" + messageFileId + \"&token=\" + this.getBearerToken();\r\n }\r\n \r\n \r\n getMessageChat(chatId: string, fromId: string, toId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n getMessageChatByGrop(chatId: string, groupId: string, fromId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/byGroup/\" + chatId + \"/\" + groupId + \"/\" + fromId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n addMessageChat(chatMessage4App: ChatMessage4App): Observable<ChatMessage4App> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatMessage4App.chatId;\r\n \r\n return this.http.post<ChatMessage4App>(url, chatMessage4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n props(chatFilterRequest4App: Array<ChatFilterRequest4App>): Observable<ChatUserResponse4App[]> {\r\n let url = this.chatUrl + \"chatmessage/props\";\r\n \r\n return this.http.post<ChatUserResponse4App[]>(url, chatFilterRequest4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n removeUsersChat(chatId: string, chatUsersId?: string[], chatUsersExternalId?: string[]): Observable<ChatUser4App[]> {\r\n let params = new Array();\r\n if (chatUsersId && chatUsersId.length > 0) {\r\n \r\n chatUsersId.forEach(cui => {\r\n params.push(\"chatUserId=\" + cui);\r\n });\r\n } else if (chatUsersExternalId && chatUsersExternalId.length > 0) {\r\n chatUsersExternalId.forEach(cuei => {\r\n params.push(\"chatUserExternalId=\" + cuei);\r\n })\r\n \r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + params.join(\"&\");\r\n \r\n return this.http.delete<ChatUser4App[]>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n removeUserChat(chatId: string, chatUserId?: string, chatUserExternalId?: string): Observable<ChatUser4App> {\r\n let param = \"\";\r\n if (chatUserId) {\r\n param = \"chatUserId=\" + chatUserId;\r\n } else {\r\n param = \"chatUserExternalId=\" + chatUserExternalId;\r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + param;\r\n \r\n return this.http.delete<ChatUser4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n updateUserChat(chatId: string, charUser4AppUpdate: ChatUser4App): Observable<ChatUser4App> {\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.put<ChatUser4App>(url, charUser4AppUpdate,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createUserChat(chatId: string, chatUser4App: ChatUser4App): Observable<ChatUser4App> {\r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n createUsersChat(chatId: string, chatUser4App: ChatUser4App[]): Observable<ChatUser4App[]> {\r\n let url = this.chatUrl + \"chatuser/users/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App[]>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.post<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n createUpdateChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.put<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getLastMessageGroup(chatExternalId: string, groupId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessageGroup?chatExternalId=\" + chatExternalId + \"&groupId=\" + groupId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n getLastMessage(chatExternalId: string, chatUserExternalId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessage?chatExternalId=\" + chatExternalId + \"&chatUserExternalId=\" + chatUserExternalId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n countNotReadMessages(chatUserExternalId: string, chatExternalId?: string, groupId?: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/countNotReadMessages?chatUserExternalId=\" + chatUserExternalId;\r\n \r\n if (chatExternalId && chatExternalId.length > 0) {\r\n url += \"&chatExternalId=\" + chatExternalId;\r\n }\r\n \r\n if (groupId && groupId.length > 0) {\r\n url += \"&groupId=\" + groupId;\r\n }\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getChatByExternalId(externalId: string): Observable<Chat4App> {\r\n \r\n let url = this.chatUrl + \"chat?externalId=\" + externalId;\r\n \r\n return this.http.get<Chat4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n readMessage(chatMessageId: string, toId?: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/read/\" + chatMessageId;\r\n \r\n if (toId && toId.length > 0) {\r\n url += \"/\" + toId;\r\n }\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n online(chatId: string, chatUserId: string): Observable<number> {\r\n \r\n let url = this.chatUrl + \"chatmessage/online/\" + chatId + \"/\" + chatUserId;\r\n \r\n return this.http.get<number>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n sendFile(chatId: string, fromId: string, toId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFile/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n \r\n sendFileGroup(chatId: string, fromId: string, groupId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFileGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n\r\n translateMessage(chatMessageId: string, languageTarget: string): Observable<Chat4AppTranslate> {\r\n \r\n let url = this.chatUrl + \"chatmessage/translate/\" + chatMessageId + \"/\" + languageTarget;\r\n \r\n return this.http.get<Chat4AppTranslate>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n stopTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n stopTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n \r\n /* Token */\r\n getBearerToken(): string {\r\n \r\n let ret = \"Bearer \" + window.sessionStorage.getItem(\"chat4AppSessionToken\");\r\n \r\n return ret;\r\n }\r\n \r\n \r\n setTokenChat4app(chat4AppSessionToken: string) {\r\n \r\n \r\n window.sessionStorage.setItem(\"chat4AppSessionToken\", chat4AppSessionToken);\r\n }\r\n \r\n \r\n /* Connection */\r\n \r\n onMessageFirebaseReceived(data: any, chatCallback: IChatCallback) {\r\n \r\n \r\n //alert(\"onMessageReceived connectFirebase\");\r\n \r\n if (data.type == \"msg\") {\r\n \r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n chat4appMessage.notification.body = data.body;\r\n \r\n if (data.fileId && data.fileId.length > 0) {\r\n chat4appMessage.data.fileId = data.fileId;\r\n chat4appMessage.data.fileName = data.fileName;\r\n chat4appMessage.data.fileSize = data.fileSize;\r\n chat4appMessage.data.fileType = data.fileType;\r\n \r\n }\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onMessage(chat4appMessage);\r\n \r\n } else if ((data.type == \"on\" || data.type == \"off\")) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onOffline(chat4appMessage);\r\n\r\n } else if (data.type == \"read\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onRead(chat4appMessage);\r\n } else if (data.type == \"startTyping\" || data.type == \"stopTyping\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onStartStopTyping(chat4appMessage);\r\n }\r\n \r\n }\r\n \r\n connectWebsocket(chatCallback: IChatCallback, token: string) {\r\n this.disconnect();\r\n \r\n let securityToken = this.getBearerToken();\r\n \r\n this.sock = new SockJS(this.chatServer + '/stomp/gkz-stomp-endpoint?token=' + securityToken);\r\n this.stompClient = Stomp.over(this.sock);\r\n this.stompClient.debug = function (msg: any) {\r\n //console.log(msg);\r\n }\r\n \r\n this.stompClient.connect({\"X-Authorization\": \"Bearer \" + securityToken}, (frame: any) => {\r\n //console.log(frame);\r\n \r\n this.stompClient.subscribe('/queue/' + token, (msg: any) => {\r\n //console.log('mensagem', msg);\r\n \r\n if (msg.command == \"MESSAGE\") {\r\n \r\n //console.log(msg)\r\n\r\n if (!chatCallback.isTokenFirebaseActive()) {\r\n \r\n let msgObj = JSON.parse(msg.body);\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in msgObj.data) {\r\n datTmp.set(key, msgObj.data[key]);\r\n }\r\n \r\n msgObj.data.all = datTmp;\r\n \r\n if (msgObj.data.type == \"msg\") {\r\n chatCallback.onMessage(msgObj);\r\n } else if ((msgObj.data.type == \"on\" || msgObj.data.type == \"off\")) {\r\n chatCallback.onOffline(msgObj);\r\n } else if (msgObj.data.type == \"read\" ) {\r\n chatCallback.onRead(msgObj);\r\n } else if (msgObj.data.type == \"startTyping\" || msgObj.data.type == \"stopTyping\") {\r\n chatCallback.onStartStopTyping(msgObj);\r\n }\r\n }\r\n\r\n \r\n //callback(msg.body);\r\n // ichatcallback.forEach((iChat)=>{\r\n // iChat.onMessage(JSON.parse(msg.body) );\r\n // });\r\n }\r\n \r\n });\r\n },\r\n (message: any) => {\r\n // check message for disconnect\r\n //console.log(\"Disconnect\");\r\n \r\n setTimeout(() => {\r\n this.connectWebsocket(chatCallback, token);\r\n }, 500);\r\n \r\n });\r\n \r\n }\r\n \r\n disconnect() {\r\n// console.log(\"disconnect\")\r\n try {\r\n if (this.stompClient) {\r\n this.stompClient.disconnect();\r\n }\r\n \r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n convertChat4AppMessageReceiveToChatMessage4App(msg: Chat4AppMessageReceive): ChatMessage4App{\r\n let message = new ChatMessage4App();\r\n message.body = msg.notification.body;\r\n message.chatId = msg.data.chatId;\r\n message.fromId = msg.data.fromId;\r\n message.toId = msg.data.toId;\r\n message.groupId = msg.data.groupId;\r\n message.dateHourIncluded = moment.utc(msg.data.dateHour, \"DD-MM-YYYY hh:mm:ss\").toDate();\r\n message.id = msg.data.chatMessageId;\r\n\r\n if (msg.data.fileId && msg.data.fileId.length > 0) {\r\n let messageFile = new ChatMessageFile4App();\r\n \r\n messageFile.id = msg.data.fileId;\r\n messageFile.name = msg.data.fileName;\r\n messageFile.size = msg.data.fileSize;\r\n messageFile.type = msg.data.fileType;\r\n\r\n message.chatMessageFile = messageFile;\r\n }\r\n\r\n return message;\r\n\r\n }\r\n \r\n }\r\n \r\n \r\n export class Chat4App {\r\n id: string;\r\n configId: string;\r\n externalId: string;\r\n title: string;\r\n status: ChatStatus4App;\r\n users: Array<ChatUser4App>;\r\n \r\n }\r\n export class ChatUser4App {\r\n id: string;\r\n name: string;\r\n clientToken: string;\r\n picturePath: string;\r\n email: string;\r\n externalId: string;\r\n status: ChatUserStatus4App;\r\n }\r\n export class ChatMessage4App {\r\n id: string;\r\n fromId: string;\r\n toId: string;\r\n chatId: string;\r\n title: string;\r\n body: string;\r\n meta: Array<ChatMessageMeta4App>;\r\n groupId: string;\r\n read: Boolean;\r\n dateHourIncluded: Date;\r\n chatMessageFile: ChatMessageFile4App;\r\n }\r\n export class ChatMessageFile4App {\r\n id: string;\r\n name: string;\r\n type: string;\r\n size: number;\r\n fullPath: string;\r\n }\r\n export class ChatMessageMeta4App {\r\n name: string;\r\n value: string;\r\n }\r\n export class Chat4AppMessageReceive {\r\n data: Chat4AppMessageReceiveData = new Chat4AppMessageReceiveData();\r\n notification: Chat4AppMessageReceiveNotification = new Chat4AppMessageReceiveNotification();\r\n token: string;\r\n }\r\n export class Chat4AppMessageReceiveData {\r\n toId: string;\r\n chatId: string;\r\n dateHour: string;\r\n chatMessageId: string;\r\n externalId: string;\r\n type: string;\r\n fromId: string;\r\n groupId: string;\r\n fileId: string;\r\n fileName: string;\r\n fileSize: number;\r\n fileType: string;\r\n all: Map<string, string>;\r\n }\r\n export class Chat4AppMessageReceiveNotification {\r\n body: string;\r\n }\r\n \r\n export class ChatUserResponse4App {\r\n totalMessages: number;\r\n chat: Chat4App;\r\n chatMessage: ChatMessage4App;\r\n chats: ChatUserResponse4App[];\r\n }\r\n export class ChatFilterRequest4App {\r\n type: ChatFilterType;\r\n chatExternalId: string;\r\n chatUserExternalId: string;\r\n groupId: string;\r\n }\r\n export class Chat4AppConfig {\r\n constructor(public endpoint: string) {\r\n \r\n }\r\n }\r\n\r\n export class Chat4AppTranslate {\r\n text: string;\r\n translatedText: string;\r\n originalSourceLanguageCode: string;\r\n sourceLanguageCode: string;\r\n targetLanguageCode: string;\r\n messageId: string;\r\n }\r\n\r\n\r\n \r\n export enum ChatStatus4App {\r\n CREATED = \"CREATED\",\r\n CLOSED = \"CLOSED\"\r\n \r\n }\r\n export enum ChatUserStatus4App {\r\n REMOVED = \"REMOVED\"\r\n \r\n }\r\n export enum ChatFilterType {\r\n COUNT_NOT_READ = 1,\r\n LAST_MESSAGE = 2\r\n }\r\n \r\n export interface IChatCallback {\r\n isTokenFirebaseActive(): Boolean;\r\n onMessage(msg: Chat4AppMessageReceive): void;\r\n onOffline(msg: Chat4AppMessageReceive): void;\r\n onRead(msg: Chat4AppMessageReceive): void;\r\n onStartStopTyping(msg: Chat4AppMessageReceive): void;\r\n\r\n\r\n }\r\n ","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-chat4app-client-angular',\n template: `\n <p>\n chat4app-client-angular works!\n </p>\n `,\n styles: [\n ]\n})\nexport class Chat4appClientAngularComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Chat4appClientAngularComponent } from './chat4app-client-angular.component';\n\n\n\n@NgModule({\n declarations: [Chat4appClientAngularComponent],\n imports: [\n ],\n exports: [Chat4appClientAngularComponent]\n})\nexport class Chat4appClientAngularModule { }\n","/*\n * Public API Surface of chat4app-client-angular\n */\n\nexport * from './lib/chat4app-client-angular.service';\nexport * from './lib/chat4app-client-angular.component';\nexport * from './lib/chat4app-client-angular.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["HttpHeaders","SockJS","Stomp","moment","Injectable","HttpClient","ChatStatus4App","ChatUserStatus4App","ChatFilterType","Component","NgModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat4app-client-angular.umd.js","sources":["../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.service.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.component.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.module.ts","../../../projects/chat4app-client-angular/src/public-api.ts","../../../projects/chat4app-client-angular/src/chat4app-client-angular.ts"],"sourcesContent":["import { Injectable, OnInit } from '@angular/core';\r\nimport * as Stomp from 'stompjs';\r\nimport * as SockJS from 'sockjs-client';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport * as moment from 'moment';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Chat4appClientAngularService implements OnInit {\r\n\r\n chatServer = \"\";\r\n chatUrl = \"\";\r\n \r\n sock: any;\r\n stompClient: any;\r\n\r\n constructor( private http: HttpClient) {\r\n \r\n }\r\n ngOnInit(): void {\r\n }\r\n\r\n config(chat4AppConfig: Chat4AppConfig) {\r\n this.chatServer = chat4AppConfig.endpoint;\r\n this.chatUrl = chat4AppConfig.endpoint + \"/api/v1/\" ;\r\n }\r\n \r\n init(securityChatToken: string, callback: any, chatCallback?: IChatCallback, connectionClientId?: string) {\r\n\r\n if (!this.chatServer || this.chatServer.trim().length == 0){\r\n throw new Error(\"Endpoint is empty\");\r\n }\r\n if (!securityChatToken || securityChatToken.trim().length == 0){\r\n throw new Error(\"SecurityChatToken is empty\");\r\n }\r\n\r\n this.setTokenChat4app(securityChatToken);\r\n \r\n if (chatCallback && connectionClientId) {\r\n this.connectWebsocket(chatCallback, connectionClientId);\r\n }\r\n \r\n callback(securityChatToken);\r\n }\r\n \r\n getChatUrlDownload(messageFileId: string) {\r\n return this.chatUrl + \"chatmessage/getFile?messageFileId=\" + messageFileId + \"&token=\" + this.getBearerToken();\r\n }\r\n \r\n \r\n getMessageChat(chatId: string, fromId: string, toId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n getMessageChatByGrop(chatId: string, groupId: string, fromId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/byGroup/\" + chatId + \"/\" + groupId + \"/\" + fromId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n addMessageChat(chatMessage4App: ChatMessage4App): Observable<ChatMessage4App> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatMessage4App.chatId;\r\n \r\n return this.http.post<ChatMessage4App>(url, chatMessage4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n props(chatFilterRequest4App: Array<ChatFilterRequest4App>): Observable<ChatUserResponse4App[]> {\r\n let url = this.chatUrl + \"chatmessage/props\";\r\n \r\n return this.http.post<ChatUserResponse4App[]>(url, chatFilterRequest4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n removeUsersChat(chatId: string, chatUsersId?: string[], chatUsersExternalId?: string[]): Observable<ChatUser4App[]> {\r\n let params = new Array();\r\n if (chatUsersId && chatUsersId.length > 0) {\r\n \r\n chatUsersId.forEach(cui => {\r\n params.push(\"chatUserId=\" + cui);\r\n });\r\n } else if (chatUsersExternalId && chatUsersExternalId.length > 0) {\r\n chatUsersExternalId.forEach(cuei => {\r\n params.push(\"chatUserExternalId=\" + cuei);\r\n })\r\n \r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + params.join(\"&\");\r\n \r\n return this.http.delete<ChatUser4App[]>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n removeUserChat(chatId: string, chatUserId?: string, chatUserExternalId?: string): Observable<ChatUser4App> {\r\n let param = \"\";\r\n if (chatUserId) {\r\n param = \"chatUserId=\" + chatUserId;\r\n } else {\r\n param = \"chatUserExternalId=\" + chatUserExternalId;\r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + param;\r\n \r\n return this.http.delete<ChatUser4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n updateUserChat(chatId: string, charUser4AppUpdate: ChatUser4App): Observable<ChatUser4App> {\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.put<ChatUser4App>(url, charUser4AppUpdate,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createUserChat(chatId: string, chatUser4App: ChatUser4App): Observable<ChatUser4App> {\r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n createUsersChat(chatId: string, chatUser4App: ChatUser4App[]): Observable<ChatUser4App[]> {\r\n let url = this.chatUrl + \"chatuser/users/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App[]>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.post<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n createUpdateChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.put<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getLastMessageGroup(chatExternalId: string, groupId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessageGroup?chatExternalId=\" + chatExternalId + \"&groupId=\" + groupId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n getLastMessage(chatExternalId: string, chatUserExternalId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessage?chatExternalId=\" + chatExternalId + \"&chatUserExternalId=\" + chatUserExternalId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n countNotReadMessages(chatUserExternalId: string, chatExternalId?: string, groupId?: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/countNotReadMessages?chatUserExternalId=\" + chatUserExternalId;\r\n \r\n if (chatExternalId && chatExternalId.length > 0) {\r\n url += \"&chatExternalId=\" + chatExternalId;\r\n }\r\n \r\n if (groupId && groupId.length > 0) {\r\n url += \"&groupId=\" + groupId;\r\n }\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getChatByExternalId(externalId: string): Observable<Chat4App> {\r\n \r\n let url = this.chatUrl + \"chat?externalId=\" + externalId;\r\n \r\n return this.http.get<Chat4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n readMessage(chatMessageId: string, toId?: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/read/\" + chatMessageId;\r\n \r\n if (toId && toId.length > 0) {\r\n url += \"/\" + toId;\r\n }\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n online(chatId: string, chatUserId: string): Observable<number> {\r\n \r\n let url = this.chatUrl + \"chatmessage/online/\" + chatId + \"/\" + chatUserId;\r\n \r\n return this.http.get<number>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n sendFile(chatId: string, fromId: string, toId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFile/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n \r\n sendFileGroup(chatId: string, fromId: string, groupId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFileGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n\r\n translateMessage(chatMessageId: string, languageTarget: string): Observable<Chat4AppTranslate> {\r\n \r\n let url = this.chatUrl + \"chatmessage/translate/\" + chatMessageId + \"/\" + languageTarget;\r\n \r\n return this.http.get<Chat4AppTranslate>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n stopTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n stopTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n \r\n /* Token */\r\n getBearerToken(): string {\r\n \r\n let ret = \"Bearer \" + window.sessionStorage.getItem(\"chat4AppSessionToken\");\r\n \r\n return ret;\r\n }\r\n \r\n \r\n setTokenChat4app(chat4AppSessionToken: string) {\r\n \r\n \r\n window.sessionStorage.setItem(\"chat4AppSessionToken\", chat4AppSessionToken);\r\n }\r\n \r\n \r\n /* Connection */\r\n \r\n onMessageFirebaseReceived(data: any, chatCallback: IChatCallback) {\r\n \r\n \r\n //alert(\"onMessageReceived connectFirebase\");\r\n \r\n if (data.type == \"msg\") {\r\n \r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n chat4appMessage.notification.body = data.body;\r\n \r\n if (data.fileId && data.fileId.length > 0) {\r\n chat4appMessage.data.fileId = data.fileId;\r\n chat4appMessage.data.fileName = data.fileName;\r\n chat4appMessage.data.fileSize = data.fileSize;\r\n chat4appMessage.data.fileType = data.fileType;\r\n \r\n }\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onMessage(chat4appMessage);\r\n \r\n } else if ((data.type == \"on\" || data.type == \"off\")) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onOffline(chat4appMessage);\r\n\r\n } else if (data.type == \"read\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onRead(chat4appMessage);\r\n } else if (data.type == \"startTyping\" || data.type == \"stopTyping\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onStartStopTyping(chat4appMessage);\r\n }\r\n \r\n }\r\n \r\n connectWebsocket(chatCallback: IChatCallback, token: string) {\r\n this.disconnect();\r\n \r\n let securityToken = this.getBearerToken();\r\n \r\n this.sock = new SockJS(this.chatServer + '/stomp/gkz-stomp-endpoint?token=' + securityToken);\r\n this.stompClient = Stomp.over(this.sock);\r\n this.stompClient.debug = function (msg: any) {\r\n //console.log(msg);\r\n }\r\n\r\n let tokenAuth = \"\";\r\n\r\n if (securityToken && securityToken.startsWith(\"Bearer \")){\r\n tokenAuth = securityToken;\r\n } else {\r\n tokenAuth = \"Bearer \" + securityToken;\r\n }\r\n \r\n this.stompClient.connect({\"X-Authorization\": tokenAuth}, (frame: any) => {\r\n //console.log(frame);\r\n \r\n this.stompClient.subscribe('/queue/' + token, (msg: any) => {\r\n //console.log('mensagem', msg);\r\n \r\n if (msg.command == \"MESSAGE\") {\r\n \r\n //console.log(msg)\r\n\r\n if (!chatCallback.isTokenFirebaseActive()) {\r\n \r\n let msgObj = JSON.parse(msg.body);\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in msgObj.data) {\r\n datTmp.set(key, msgObj.data[key]);\r\n }\r\n \r\n msgObj.data.all = datTmp;\r\n \r\n if (msgObj.data.type == \"msg\") {\r\n chatCallback.onMessage(msgObj);\r\n } else if ((msgObj.data.type == \"on\" || msgObj.data.type == \"off\")) {\r\n chatCallback.onOffline(msgObj);\r\n } else if (msgObj.data.type == \"read\" ) {\r\n chatCallback.onRead(msgObj);\r\n } else if (msgObj.data.type == \"startTyping\" || msgObj.data.type == \"stopTyping\") {\r\n chatCallback.onStartStopTyping(msgObj);\r\n }\r\n }\r\n\r\n \r\n //callback(msg.body);\r\n // ichatcallback.forEach((iChat)=>{\r\n // iChat.onMessage(JSON.parse(msg.body) );\r\n // });\r\n }\r\n \r\n });\r\n },\r\n (message: any) => {\r\n // check message for disconnect\r\n //console.log(\"Disconnect\");\r\n \r\n setTimeout(() => {\r\n this.connectWebsocket(chatCallback, token);\r\n }, 500);\r\n \r\n });\r\n \r\n }\r\n \r\n disconnect() {\r\n// console.log(\"disconnect\")\r\n try {\r\n if (this.stompClient) {\r\n this.stompClient.disconnect();\r\n }\r\n \r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n convertChat4AppMessageReceiveToChatMessage4App(msg: Chat4AppMessageReceive): ChatMessage4App{\r\n let message = new ChatMessage4App();\r\n message.body = msg.notification.body;\r\n message.chatId = msg.data.chatId;\r\n message.fromId = msg.data.fromId;\r\n message.toId = msg.data.toId;\r\n message.groupId = msg.data.groupId;\r\n message.dateHourIncluded = moment.utc(msg.data.dateHour, \"DD-MM-YYYY hh:mm:ss\").toDate();\r\n message.id = msg.data.chatMessageId;\r\n\r\n if (msg.data.fileId && msg.data.fileId.length > 0) {\r\n let messageFile = new ChatMessageFile4App();\r\n \r\n messageFile.id = msg.data.fileId;\r\n messageFile.name = msg.data.fileName;\r\n messageFile.size = msg.data.fileSize;\r\n messageFile.type = msg.data.fileType;\r\n\r\n message.chatMessageFile = messageFile;\r\n }\r\n\r\n return message;\r\n\r\n }\r\n \r\n }\r\n \r\n \r\n export class Chat4App {\r\n id: string;\r\n configId: string;\r\n externalId: string;\r\n title: string;\r\n status: ChatStatus4App;\r\n users: Array<ChatUser4App>;\r\n \r\n }\r\n export class ChatUser4App {\r\n id: string;\r\n name: string;\r\n clientToken: string;\r\n picturePath: string;\r\n email: string;\r\n externalId: string;\r\n status: ChatUserStatus4App;\r\n }\r\n export class ChatMessage4App {\r\n id: string;\r\n fromId: string;\r\n toId: string;\r\n chatId: string;\r\n title: string;\r\n body: string;\r\n meta: Array<ChatMessageMeta4App>;\r\n groupId: string;\r\n read: Boolean;\r\n dateHourIncluded: Date;\r\n chatMessageFile: ChatMessageFile4App;\r\n }\r\n export class ChatMessageFile4App {\r\n id: string;\r\n name: string;\r\n type: string;\r\n size: number;\r\n fullPath: string;\r\n }\r\n export class ChatMessageMeta4App {\r\n name: string;\r\n value: string;\r\n }\r\n export class Chat4AppMessageReceive {\r\n data: Chat4AppMessageReceiveData = new Chat4AppMessageReceiveData();\r\n notification: Chat4AppMessageReceiveNotification = new Chat4AppMessageReceiveNotification();\r\n token: string;\r\n }\r\n export class Chat4AppMessageReceiveData {\r\n toId: string;\r\n chatId: string;\r\n dateHour: string;\r\n chatMessageId: string;\r\n externalId: string;\r\n type: string;\r\n fromId: string;\r\n groupId: string;\r\n fileId: string;\r\n fileName: string;\r\n fileSize: number;\r\n fileType: string;\r\n all: Map<string, string>;\r\n }\r\n export class Chat4AppMessageReceiveNotification {\r\n body: string;\r\n }\r\n \r\n export class ChatUserResponse4App {\r\n totalMessages: number;\r\n chat: Chat4App;\r\n chatMessage: ChatMessage4App;\r\n chats: ChatUserResponse4App[];\r\n }\r\n export class ChatFilterRequest4App {\r\n type: ChatFilterType;\r\n chatExternalId: string;\r\n chatUserExternalId: string;\r\n groupId: string;\r\n }\r\n export class Chat4AppConfig {\r\n constructor(public endpoint: string) {\r\n \r\n }\r\n }\r\n\r\n export class Chat4AppTranslate {\r\n text: string;\r\n translatedText: string;\r\n originalSourceLanguageCode: string;\r\n sourceLanguageCode: string;\r\n targetLanguageCode: string;\r\n messageId: string;\r\n }\r\n\r\n\r\n \r\n export enum ChatStatus4App {\r\n CREATED = \"CREATED\",\r\n CLOSED = \"CLOSED\"\r\n \r\n }\r\n export enum ChatUserStatus4App {\r\n REMOVED = \"REMOVED\"\r\n \r\n }\r\n export enum ChatFilterType {\r\n COUNT_NOT_READ = 1,\r\n LAST_MESSAGE = 2\r\n }\r\n \r\n export interface IChatCallback {\r\n isTokenFirebaseActive(): Boolean;\r\n onMessage(msg: Chat4AppMessageReceive): void;\r\n onOffline(msg: Chat4AppMessageReceive): void;\r\n onRead(msg: Chat4AppMessageReceive): void;\r\n onStartStopTyping(msg: Chat4AppMessageReceive): void;\r\n\r\n\r\n }\r\n ","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-chat4app-client-angular',\n template: `\n <p>\n chat4app-client-angular works!\n </p>\n `,\n styles: [\n ]\n})\nexport class Chat4appClientAngularComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Chat4appClientAngularComponent } from './chat4app-client-angular.component';\n\n\n\n@NgModule({\n declarations: [Chat4appClientAngularComponent],\n imports: [\n ],\n exports: [Chat4appClientAngularComponent]\n})\nexport class Chat4appClientAngularModule { }\n","/*\n * Public API Surface of chat4app-client-angular\n */\n\nexport * from './lib/chat4app-client-angular.service';\nexport * from './lib/chat4app-client-angular.component';\nexport * from './lib/chat4app-client-angular.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["HttpHeaders","SockJS","Stomp","moment","Injectable","HttpClient","ChatStatus4App","ChatUserStatus4App","ChatFilterType","Component","NgModule"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("stompjs"),require("sockjs-client"),require("@angular/common/http"),require("moment")):"function"==typeof define&&define.amd?define("chat4app-client-angular",["exports","@angular/core","stompjs","sockjs-client","@angular/common/http","moment"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["chat4app-client-angular"]={},t.ng.core,t.Stomp,t.SockJS,t.ng.common.http,t.moment)}(this,(function(t,e,a,r,n,o){"use strict";function s(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(e,a,r.get?r:{enumerable:!0,get:function(){return t[a]}})}})),e.default=t,Object.freeze(e)}var i=s(e),p=s(a),h=s(r),d=s(n),c=s(o),u=function(){function t(t){this.http=t,this.chatServer="",this.chatUrl=""}return t.prototype.ngOnInit=function(){},t.prototype.config=function(t){this.chatServer=t.endpoint,this.chatUrl=t.endpoint+"/api/v1/"},t.prototype.init=function(t,e,a,r){if(!this.chatServer||0==this.chatServer.trim().length)throw new Error("Endpoint is empty");if(!t||0==t.trim().length)throw new Error("SecurityChatToken is empty");this.setTokenChat4app(t),a&&r&&this.connectWebsocket(a,r),e(t)},t.prototype.getChatUrlDownload=function(t){return this.chatUrl+"chatmessage/getFile?messageFileId="+t+"&token="+this.getBearerToken()},t.prototype.getMessageChat=function(t,e,a){var r=this.chatUrl+"chatmessage/"+t+"/"+e+"/"+a;return this.http.get(r,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getMessageChatByGrop=function(t,e,a){var r=this.chatUrl+"chatmessage/byGroup/"+t+"/"+e+"/"+a;return this.http.get(r,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.addMessageChat=function(t){var e=this.chatUrl+"chatmessage/"+t.chatId;return this.http.post(e,t,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.props=function(t){var e=this.chatUrl+"chatmessage/props";return this.http.post(e,t,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.removeUsersChat=function(t,e,a){var r=new Array;e&&e.length>0?e.forEach((function(t){r.push("chatUserId="+t)})):a&&a.length>0&&a.forEach((function(t){r.push("chatUserExternalId="+t)}));var o=this.chatUrl+"chatuser/"+t+"?"+r.join("&");return this.http.delete(o,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.removeUserChat=function(t,e,a){var r="";r=e?"chatUserId="+e:"chatUserExternalId="+a;var o=this.chatUrl+"chatuser/"+t+"?"+r;return this.http.delete(o,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.updateUserChat=function(t,e){var a=this.chatUrl+"chatuser/"+t;return this.http.put(a,e,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.createUserChat=function(t,e){var a=this.chatUrl+"chatuser/"+t;return this.http.post(a,e,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.createUsersChat=function(t,e){var a=this.chatUrl+"chatuser/users/"+t;return this.http.post(a,e,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.createChat=function(t){var e=this.chatUrl+"chat";return this.http.post(e,t,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.createUpdateChat=function(t){var e=this.chatUrl+"chat";return this.http.put(e,t,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getLastMessageGroup=function(t,e){var a=this.chatUrl+"chatmessage/lastMessageGroup?chatExternalId="+t+"&groupId="+e;return this.http.get(a,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getLastMessage=function(t,e){var a=this.chatUrl+"chatmessage/lastMessage?chatExternalId="+t+"&chatUserExternalId="+e;return this.http.get(a,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.countNotReadMessages=function(t,e,a){var r=this.chatUrl+"chatmessage/countNotReadMessages?chatUserExternalId="+t;return e&&e.length>0&&(r+="&chatExternalId="+e),a&&a.length>0&&(r+="&groupId="+a),this.http.get(r,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getChatByExternalId=function(t){var e=this.chatUrl+"chat?externalId="+t;return this.http.get(e,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.readMessage=function(t,e){var a=this.chatUrl+"chatmessage/read/"+t;return e&&e.length>0&&(a+="/"+e),this.http.put(a,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.online=function(t,e){var a=this.chatUrl+"chatmessage/online/"+t+"/"+e;return this.http.get(a,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.sendFile=function(t,e,a,r){var o=this.chatUrl+"chatmessage/sendFile/"+t+"/"+e+"/"+a,s=new FormData;return s.append("file",r),this.http.post(o,s,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.sendFileGroup=function(t,e,a,r){var o=this.chatUrl+"chatmessage/sendFileGroup/"+t+"/"+e+"/"+a,s=new FormData;return s.append("file",r),this.http.post(o,s,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.translateMessage=function(t,e){var a=this.chatUrl+"chatmessage/translate/"+t+"/"+e;return this.http.get(a,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.startTyping=function(t,e,a){var r=this.chatUrl+"chatmessage/startTyping/"+t+"/"+e+"/"+a;return this.http.put(r,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.startTypingGroup=function(t,e,a){var r=this.chatUrl+"chatmessage/startTypingGroup/"+t+"/"+e+"/"+a;return this.http.put(r,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.stopTyping=function(t,e,a){var r=this.chatUrl+"chatmessage/stopTyping/"+t+"/"+e+"/"+a;return this.http.put(r,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.stopTypingGroup=function(t,e,a){var r=this.chatUrl+"chatmessage/stopTypingGroup/"+t+"/"+e+"/"+a;return this.http.put(r,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getBearerToken=function(){return"Bearer "+window.sessionStorage.getItem("chat4AppSessionToken")},t.prototype.setTokenChat4app=function(t){window.sessionStorage.setItem("chat4AppSessionToken",t)},t.prototype.onMessageFirebaseReceived=function(t,e){if("msg"==t.type){(n=new T).data.chatId=t.chatId,n.data.chatMessageId=t.chatMessageId,n.data.externalId=t.externalId,n.data.fromId=t.fromId,n.data.toId=t.toId,n.data.groupId=t.groupId,n.data.dateHour=t.dateHour,n.data.type=t.type,n.notification.body=t.body,t.fileId&&t.fileId.length>0&&(n.data.fileId=t.fileId,n.data.fileName=t.fileName,n.data.fileSize=t.fileSize,n.data.fileType=t.fileType);var a=new Map;for(var r in t)a.set(r,t[r]);n.data.all=a,e.onMessage(n)}else if("on"==t.type||"off"==t.type){(n=new T).data.chatId=t.chatId,n.data.chatMessageId=t.chatMessageId,n.data.externalId=t.externalId,n.data.fromId=t.fromId,n.data.toId=t.toId,n.data.groupId=t.groupId,n.data.dateHour=t.dateHour,n.data.type=t.type;a=new Map;for(var r in t)a.set(r,t[r]);n.data.all=a,e.onOffline(n)}else if("read"==t.type){(n=new T).data.chatId=t.chatId,n.data.chatMessageId=t.chatMessageId,n.data.externalId=t.externalId,n.data.fromId=t.fromId,n.data.toId=t.toId,n.data.groupId=t.groupId,n.data.dateHour=t.dateHour,n.data.type=t.type;a=new Map;for(var r in t)a.set(r,t[r]);n.data.all=a,e.onRead(n)}else if("startTyping"==t.type||"stopTyping"==t.type){var n;(n=new T).data.chatId=t.chatId,n.data.chatMessageId=t.chatMessageId,n.data.externalId=t.externalId,n.data.fromId=t.fromId,n.data.toId=t.toId,n.data.groupId=t.groupId,n.data.dateHour=t.dateHour,n.data.type=t.type;a=new Map;for(var r in t)a.set(r,t[r]);n.data.all=a,e.onStartStopTyping(n)}},t.prototype.connectWebsocket=function(t,e){var a=this;this.disconnect();var r=this.getBearerToken();this.sock=new h(this.chatServer+"/stomp/gkz-stomp-endpoint?token="+r),this.stompClient=p.over(this.sock),this.stompClient.debug=function(t){},this.stompClient.connect({"X-Authorization":"Bearer "+r},(function(r){a.stompClient.subscribe("/queue/"+e,(function(e){if("MESSAGE"==e.command&&!t.isTokenFirebaseActive()){var a=JSON.parse(e.body),r=new Map;for(var n in a.data)r.set(n,a.data[n]);a.data.all=r,"msg"==a.data.type?t.onMessage(a):"on"==a.data.type||"off"==a.data.type?t.onOffline(a):"read"==a.data.type?t.onRead(a):"startTyping"!=a.data.type&&"stopTyping"!=a.data.type||t.onStartStopTyping(a)}}))}),(function(r){setTimeout((function(){a.connectWebsocket(t,e)}),500)}))},t.prototype.disconnect=function(){try{this.stompClient&&this.stompClient.disconnect()}catch(t){console.log(t)}},t.prototype.convertChat4AppMessageReceiveToChatMessage4App=function(t){var e=new I;if(e.body=t.notification.body,e.chatId=t.data.chatId,e.fromId=t.data.fromId,e.toId=t.data.toId,e.groupId=t.data.groupId,e.dateHourIncluded=c.utc(t.data.dateHour,"DD-MM-YYYY hh:mm:ss").toDate(),e.id=t.data.chatMessageId,t.data.fileId&&t.data.fileId.length>0){var a=new m;a.id=t.data.fileId,a.name=t.data.fileName,a.size=t.data.fileSize,a.type=t.data.fileType,e.chatMessageFile=a}return e},t}();u.ɵprov=i.ɵɵdefineInjectable({factory:function(){return new u(i.ɵɵinject(d.HttpClient))},token:u,providedIn:"root"}),u.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],u.ctorParameters=function(){return[{type:n.HttpClient}]};var l,g,f=function(){},y=function(){},I=function(){},m=function(){},v=function(){},T=function(){this.data=new A,this.notification=new C},A=function(){},C=function(){},H=function(){},w=function(){},M=function(t){this.endpoint=t},k=function(){};t.ChatStatus4App=void 0,(l=t.ChatStatus4App||(t.ChatStatus4App={})).CREATED="CREATED",l.CLOSED="CLOSED",t.ChatUserStatus4App=void 0,(t.ChatUserStatus4App||(t.ChatUserStatus4App={})).REMOVED="REMOVED",t.ChatFilterType=void 0,(g=t.ChatFilterType||(t.ChatFilterType={}))[g.COUNT_NOT_READ=1]="COUNT_NOT_READ",g[g.LAST_MESSAGE=2]="LAST_MESSAGE";var U=function(){function t(){}return t.prototype.ngOnInit=function(){},t}();U.decorators=[{type:e.Component,args:[{selector:"lib-chat4app-client-angular",template:"\n <p>\n chat4app-client-angular works!\n </p>\n "}]}],U.ctorParameters=function(){return[]};var S=function(){};S.decorators=[{type:e.NgModule,args:[{declarations:[U],imports:[],exports:[U]}]}],t.Chat4App=f,t.Chat4AppConfig=M,t.Chat4AppMessageReceive=T,t.Chat4AppMessageReceiveData=A,t.Chat4AppMessageReceiveNotification=C,t.Chat4AppTranslate=k,t.Chat4appClientAngularComponent=U,t.Chat4appClientAngularModule=S,t.Chat4appClientAngularService=u,t.ChatFilterRequest4App=w,t.ChatMessage4App=I,t.ChatMessageFile4App=m,t.ChatMessageMeta4App=v,t.ChatUser4App=y,t.ChatUserResponse4App=H,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("stompjs"),require("sockjs-client"),require("@angular/common/http"),require("moment")):"function"==typeof define&&define.amd?define("chat4app-client-angular",["exports","@angular/core","stompjs","sockjs-client","@angular/common/http","moment"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["chat4app-client-angular"]={},t.ng.core,t.Stomp,t.SockJS,t.ng.common.http,t.moment)}(this,(function(t,e,a,r,n,o){"use strict";function s(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(e,a,r.get?r:{enumerable:!0,get:function(){return t[a]}})}})),e.default=t,Object.freeze(e)}var i=s(e),p=s(a),h=s(r),d=s(n),c=s(o),u=function(){function t(t){this.http=t,this.chatServer="",this.chatUrl=""}return t.prototype.ngOnInit=function(){},t.prototype.config=function(t){this.chatServer=t.endpoint,this.chatUrl=t.endpoint+"/api/v1/"},t.prototype.init=function(t,e,a,r){if(!this.chatServer||0==this.chatServer.trim().length)throw new Error("Endpoint is empty");if(!t||0==t.trim().length)throw new Error("SecurityChatToken is empty");this.setTokenChat4app(t),a&&r&&this.connectWebsocket(a,r),e(t)},t.prototype.getChatUrlDownload=function(t){return this.chatUrl+"chatmessage/getFile?messageFileId="+t+"&token="+this.getBearerToken()},t.prototype.getMessageChat=function(t,e,a){var r=this.chatUrl+"chatmessage/"+t+"/"+e+"/"+a;return this.http.get(r,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getMessageChatByGrop=function(t,e,a){var r=this.chatUrl+"chatmessage/byGroup/"+t+"/"+e+"/"+a;return this.http.get(r,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.addMessageChat=function(t){var e=this.chatUrl+"chatmessage/"+t.chatId;return this.http.post(e,t,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.props=function(t){var e=this.chatUrl+"chatmessage/props";return this.http.post(e,t,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.removeUsersChat=function(t,e,a){var r=new Array;e&&e.length>0?e.forEach((function(t){r.push("chatUserId="+t)})):a&&a.length>0&&a.forEach((function(t){r.push("chatUserExternalId="+t)}));var o=this.chatUrl+"chatuser/"+t+"?"+r.join("&");return this.http.delete(o,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.removeUserChat=function(t,e,a){var r="";r=e?"chatUserId="+e:"chatUserExternalId="+a;var o=this.chatUrl+"chatuser/"+t+"?"+r;return this.http.delete(o,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.updateUserChat=function(t,e){var a=this.chatUrl+"chatuser/"+t;return this.http.put(a,e,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.createUserChat=function(t,e){var a=this.chatUrl+"chatuser/"+t;return this.http.post(a,e,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.createUsersChat=function(t,e){var a=this.chatUrl+"chatuser/users/"+t;return this.http.post(a,e,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.createChat=function(t){var e=this.chatUrl+"chat";return this.http.post(e,t,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.createUpdateChat=function(t){var e=this.chatUrl+"chat";return this.http.put(e,t,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getLastMessageGroup=function(t,e){var a=this.chatUrl+"chatmessage/lastMessageGroup?chatExternalId="+t+"&groupId="+e;return this.http.get(a,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getLastMessage=function(t,e){var a=this.chatUrl+"chatmessage/lastMessage?chatExternalId="+t+"&chatUserExternalId="+e;return this.http.get(a,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.countNotReadMessages=function(t,e,a){var r=this.chatUrl+"chatmessage/countNotReadMessages?chatUserExternalId="+t;return e&&e.length>0&&(r+="&chatExternalId="+e),a&&a.length>0&&(r+="&groupId="+a),this.http.get(r,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getChatByExternalId=function(t){var e=this.chatUrl+"chat?externalId="+t;return this.http.get(e,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.readMessage=function(t,e){var a=this.chatUrl+"chatmessage/read/"+t;return e&&e.length>0&&(a+="/"+e),this.http.put(a,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.online=function(t,e){var a=this.chatUrl+"chatmessage/online/"+t+"/"+e;return this.http.get(a,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.sendFile=function(t,e,a,r){var o=this.chatUrl+"chatmessage/sendFile/"+t+"/"+e+"/"+a,s=new FormData;return s.append("file",r),this.http.post(o,s,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.sendFileGroup=function(t,e,a,r){var o=this.chatUrl+"chatmessage/sendFileGroup/"+t+"/"+e+"/"+a,s=new FormData;return s.append("file",r),this.http.post(o,s,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.translateMessage=function(t,e){var a=this.chatUrl+"chatmessage/translate/"+t+"/"+e;return this.http.get(a,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.startTyping=function(t,e,a){var r=this.chatUrl+"chatmessage/startTyping/"+t+"/"+e+"/"+a;return this.http.put(r,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.startTypingGroup=function(t,e,a){var r=this.chatUrl+"chatmessage/startTypingGroup/"+t+"/"+e+"/"+a;return this.http.put(r,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.stopTyping=function(t,e,a){var r=this.chatUrl+"chatmessage/stopTyping/"+t+"/"+e+"/"+a;return this.http.put(r,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.stopTypingGroup=function(t,e,a){var r=this.chatUrl+"chatmessage/stopTypingGroup/"+t+"/"+e+"/"+a;return this.http.put(r,null,{headers:(new n.HttpHeaders).set("Authorization",this.getBearerToken())})},t.prototype.getBearerToken=function(){return"Bearer "+window.sessionStorage.getItem("chat4AppSessionToken")},t.prototype.setTokenChat4app=function(t){window.sessionStorage.setItem("chat4AppSessionToken",t)},t.prototype.onMessageFirebaseReceived=function(t,e){if("msg"==t.type){(n=new T).data.chatId=t.chatId,n.data.chatMessageId=t.chatMessageId,n.data.externalId=t.externalId,n.data.fromId=t.fromId,n.data.toId=t.toId,n.data.groupId=t.groupId,n.data.dateHour=t.dateHour,n.data.type=t.type,n.notification.body=t.body,t.fileId&&t.fileId.length>0&&(n.data.fileId=t.fileId,n.data.fileName=t.fileName,n.data.fileSize=t.fileSize,n.data.fileType=t.fileType);var a=new Map;for(var r in t)a.set(r,t[r]);n.data.all=a,e.onMessage(n)}else if("on"==t.type||"off"==t.type){(n=new T).data.chatId=t.chatId,n.data.chatMessageId=t.chatMessageId,n.data.externalId=t.externalId,n.data.fromId=t.fromId,n.data.toId=t.toId,n.data.groupId=t.groupId,n.data.dateHour=t.dateHour,n.data.type=t.type;a=new Map;for(var r in t)a.set(r,t[r]);n.data.all=a,e.onOffline(n)}else if("read"==t.type){(n=new T).data.chatId=t.chatId,n.data.chatMessageId=t.chatMessageId,n.data.externalId=t.externalId,n.data.fromId=t.fromId,n.data.toId=t.toId,n.data.groupId=t.groupId,n.data.dateHour=t.dateHour,n.data.type=t.type;a=new Map;for(var r in t)a.set(r,t[r]);n.data.all=a,e.onRead(n)}else if("startTyping"==t.type||"stopTyping"==t.type){var n;(n=new T).data.chatId=t.chatId,n.data.chatMessageId=t.chatMessageId,n.data.externalId=t.externalId,n.data.fromId=t.fromId,n.data.toId=t.toId,n.data.groupId=t.groupId,n.data.dateHour=t.dateHour,n.data.type=t.type;a=new Map;for(var r in t)a.set(r,t[r]);n.data.all=a,e.onStartStopTyping(n)}},t.prototype.connectWebsocket=function(t,e){var a=this;this.disconnect();var r=this.getBearerToken();this.sock=new h(this.chatServer+"/stomp/gkz-stomp-endpoint?token="+r),this.stompClient=p.over(this.sock),this.stompClient.debug=function(t){};var n="";n=r&&r.startsWith("Bearer ")?r:"Bearer "+r,this.stompClient.connect({"X-Authorization":n},(function(r){a.stompClient.subscribe("/queue/"+e,(function(e){if("MESSAGE"==e.command&&!t.isTokenFirebaseActive()){var a=JSON.parse(e.body),r=new Map;for(var n in a.data)r.set(n,a.data[n]);a.data.all=r,"msg"==a.data.type?t.onMessage(a):"on"==a.data.type||"off"==a.data.type?t.onOffline(a):"read"==a.data.type?t.onRead(a):"startTyping"!=a.data.type&&"stopTyping"!=a.data.type||t.onStartStopTyping(a)}}))}),(function(r){setTimeout((function(){a.connectWebsocket(t,e)}),500)}))},t.prototype.disconnect=function(){try{this.stompClient&&this.stompClient.disconnect()}catch(t){console.log(t)}},t.prototype.convertChat4AppMessageReceiveToChatMessage4App=function(t){var e=new I;if(e.body=t.notification.body,e.chatId=t.data.chatId,e.fromId=t.data.fromId,e.toId=t.data.toId,e.groupId=t.data.groupId,e.dateHourIncluded=c.utc(t.data.dateHour,"DD-MM-YYYY hh:mm:ss").toDate(),e.id=t.data.chatMessageId,t.data.fileId&&t.data.fileId.length>0){var a=new m;a.id=t.data.fileId,a.name=t.data.fileName,a.size=t.data.fileSize,a.type=t.data.fileType,e.chatMessageFile=a}return e},t}();u.ɵprov=i.ɵɵdefineInjectable({factory:function(){return new u(i.ɵɵinject(d.HttpClient))},token:u,providedIn:"root"}),u.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],u.ctorParameters=function(){return[{type:n.HttpClient}]};var l,g,f=function(){},y=function(){},I=function(){},m=function(){},v=function(){},T=function(){this.data=new A,this.notification=new C},A=function(){},C=function(){},H=function(){},w=function(){},M=function(t){this.endpoint=t},k=function(){};t.ChatStatus4App=void 0,(l=t.ChatStatus4App||(t.ChatStatus4App={})).CREATED="CREATED",l.CLOSED="CLOSED",t.ChatUserStatus4App=void 0,(t.ChatUserStatus4App||(t.ChatUserStatus4App={})).REMOVED="REMOVED",t.ChatFilterType=void 0,(g=t.ChatFilterType||(t.ChatFilterType={}))[g.COUNT_NOT_READ=1]="COUNT_NOT_READ",g[g.LAST_MESSAGE=2]="LAST_MESSAGE";var U=function(){function t(){}return t.prototype.ngOnInit=function(){},t}();U.decorators=[{type:e.Component,args:[{selector:"lib-chat4app-client-angular",template:"\n <p>\n chat4app-client-angular works!\n </p>\n "}]}],U.ctorParameters=function(){return[]};var S=function(){};S.decorators=[{type:e.NgModule,args:[{declarations:[U],imports:[],exports:[U]}]}],t.Chat4App=f,t.Chat4AppConfig=M,t.Chat4AppMessageReceive=T,t.Chat4AppMessageReceiveData=A,t.Chat4AppMessageReceiveNotification=C,t.Chat4AppTranslate=k,t.Chat4appClientAngularComponent=U,t.Chat4appClientAngularModule=S,t.Chat4appClientAngularService=u,t.ChatFilterRequest4App=w,t.ChatMessage4App=I,t.ChatMessageFile4App=m,t.ChatMessageMeta4App=v,t.ChatUser4App=y,t.ChatUserResponse4App=H,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
2
2
|
//# sourceMappingURL=chat4app-client-angular.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.service.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.component.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.module.ts"],"names":["Chat4appClientAngularService","http","this","chatServer","chatUrl","prototype","ngOnInit","config","chat4AppConfig","endpoint","init","securityChatToken","callback","chatCallback","connectionClientId","trim","length","Error","setTokenChat4app","connectWebsocket","getChatUrlDownload","messageFileId","getBearerToken","getMessageChat","chatId","fromId","toId","url","get","headers","HttpHeaders","set","getMessageChatByGrop","groupId","addMessageChat","chatMessage4App","post","props","chatFilterRequest4App","removeUsersChat","chatUsersId","chatUsersExternalId","params","Array","forEach","cui","push","cuei","join","delete","removeUserChat","chatUserId","chatUserExternalId","param","updateUserChat","charUser4AppUpdate","put","createUserChat","chatUser4App","createUsersChat","createChat","chat4app","createUpdateChat","getLastMessageGroup","chatExternalId","getLastMessage","countNotReadMessages","getChatByExternalId","externalId","readMessage","chatMessageId","online","sendFile","fileToUpload","formData","FormData","append","sendFileGroup","translateMessage","languageTarget","startTyping","startTypingGroup","stopTyping","stopTypingGroup","window","sessionStorage","getItem","chat4AppSessionToken","setItem","onMessageFirebaseReceived","data","type","chat4appMessage","Chat4AppMessageReceive","dateHour","notification","body","fileId","fileName","fileSize","fileType","datTmp","Map","key","all","onMessage","onOffline","onRead","onStartStopTyping","token","_this","disconnect","securityToken","sock","SockJS","stompClient","Stomp","over","debug","msg","connect","X-Authorization","frame","subscribe","command","isTokenFirebaseActive","msgObj","JSON","parse","message","setTimeout","e","console","log","convertChat4AppMessageReceiveToChatMessage4App","ChatMessage4App","dateHourIncluded","moment","utc","toDate","id","messageFile","ChatMessageFile4App","name","size","chatMessageFile","Injectable","args","providedIn","HttpClient","ChatStatus4App","ChatFilterType","Chat4App","ChatUser4App","ChatMessageMeta4App","Chat4AppMessageReceiveData","Chat4AppMessageReceiveNotification","ChatUserResponse4App","ChatFilterRequest4App","Chat4AppConfig","Chat4AppTranslate","ChatUserStatus4App","Chat4appClientAngularComponent","Component","selector","template","Chat4appClientAngularModule","NgModule","declarations","imports","exports"],"mappings":"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","sourcesContent":["import { Injectable, OnInit } from '@angular/core';\r\nimport * as Stomp from 'stompjs';\r\nimport * as SockJS from 'sockjs-client';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport * as moment from 'moment';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Chat4appClientAngularService implements OnInit {\r\n\r\n chatServer = \"\";\r\n chatUrl = \"\";\r\n \r\n sock: any;\r\n stompClient: any;\r\n\r\n constructor( private http: HttpClient) {\r\n \r\n }\r\n ngOnInit(): void {\r\n }\r\n\r\n config(chat4AppConfig: Chat4AppConfig) {\r\n this.chatServer = chat4AppConfig.endpoint;\r\n this.chatUrl = chat4AppConfig.endpoint + \"/api/v1/\" ;\r\n }\r\n \r\n init(securityChatToken: string, callback: any, chatCallback?: IChatCallback, connectionClientId?: string) {\r\n\r\n if (!this.chatServer || this.chatServer.trim().length == 0){\r\n throw new Error(\"Endpoint is empty\");\r\n }\r\n if (!securityChatToken || securityChatToken.trim().length == 0){\r\n throw new Error(\"SecurityChatToken is empty\");\r\n }\r\n\r\n this.setTokenChat4app(securityChatToken);\r\n \r\n if (chatCallback && connectionClientId) {\r\n this.connectWebsocket(chatCallback, connectionClientId);\r\n }\r\n \r\n callback(securityChatToken);\r\n }\r\n \r\n getChatUrlDownload(messageFileId: string) {\r\n return this.chatUrl + \"chatmessage/getFile?messageFileId=\" + messageFileId + \"&token=\" + this.getBearerToken();\r\n }\r\n \r\n \r\n getMessageChat(chatId: string, fromId: string, toId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n getMessageChatByGrop(chatId: string, groupId: string, fromId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/byGroup/\" + chatId + \"/\" + groupId + \"/\" + fromId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n addMessageChat(chatMessage4App: ChatMessage4App): Observable<ChatMessage4App> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatMessage4App.chatId;\r\n \r\n return this.http.post<ChatMessage4App>(url, chatMessage4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n props(chatFilterRequest4App: Array<ChatFilterRequest4App>): Observable<ChatUserResponse4App[]> {\r\n let url = this.chatUrl + \"chatmessage/props\";\r\n \r\n return this.http.post<ChatUserResponse4App[]>(url, chatFilterRequest4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n removeUsersChat(chatId: string, chatUsersId?: string[], chatUsersExternalId?: string[]): Observable<ChatUser4App[]> {\r\n let params = new Array();\r\n if (chatUsersId && chatUsersId.length > 0) {\r\n \r\n chatUsersId.forEach(cui => {\r\n params.push(\"chatUserId=\" + cui);\r\n });\r\n } else if (chatUsersExternalId && chatUsersExternalId.length > 0) {\r\n chatUsersExternalId.forEach(cuei => {\r\n params.push(\"chatUserExternalId=\" + cuei);\r\n })\r\n \r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + params.join(\"&\");\r\n \r\n return this.http.delete<ChatUser4App[]>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n removeUserChat(chatId: string, chatUserId?: string, chatUserExternalId?: string): Observable<ChatUser4App> {\r\n let param = \"\";\r\n if (chatUserId) {\r\n param = \"chatUserId=\" + chatUserId;\r\n } else {\r\n param = \"chatUserExternalId=\" + chatUserExternalId;\r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + param;\r\n \r\n return this.http.delete<ChatUser4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n updateUserChat(chatId: string, charUser4AppUpdate: ChatUser4App): Observable<ChatUser4App> {\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.put<ChatUser4App>(url, charUser4AppUpdate,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createUserChat(chatId: string, chatUser4App: ChatUser4App): Observable<ChatUser4App> {\r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n createUsersChat(chatId: string, chatUser4App: ChatUser4App[]): Observable<ChatUser4App[]> {\r\n let url = this.chatUrl + \"chatuser/users/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App[]>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.post<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n createUpdateChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.put<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getLastMessageGroup(chatExternalId: string, groupId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessageGroup?chatExternalId=\" + chatExternalId + \"&groupId=\" + groupId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n getLastMessage(chatExternalId: string, chatUserExternalId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessage?chatExternalId=\" + chatExternalId + \"&chatUserExternalId=\" + chatUserExternalId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n countNotReadMessages(chatUserExternalId: string, chatExternalId?: string, groupId?: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/countNotReadMessages?chatUserExternalId=\" + chatUserExternalId;\r\n \r\n if (chatExternalId && chatExternalId.length > 0) {\r\n url += \"&chatExternalId=\" + chatExternalId;\r\n }\r\n \r\n if (groupId && groupId.length > 0) {\r\n url += \"&groupId=\" + groupId;\r\n }\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getChatByExternalId(externalId: string): Observable<Chat4App> {\r\n \r\n let url = this.chatUrl + \"chat?externalId=\" + externalId;\r\n \r\n return this.http.get<Chat4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n readMessage(chatMessageId: string, toId?: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/read/\" + chatMessageId;\r\n \r\n if (toId && toId.length > 0) {\r\n url += \"/\" + toId;\r\n }\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n online(chatId: string, chatUserId: string): Observable<number> {\r\n \r\n let url = this.chatUrl + \"chatmessage/online/\" + chatId + \"/\" + chatUserId;\r\n \r\n return this.http.get<number>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n sendFile(chatId: string, fromId: string, toId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFile/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n \r\n sendFileGroup(chatId: string, fromId: string, groupId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFileGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n\r\n translateMessage(chatMessageId: string, languageTarget: string): Observable<Chat4AppTranslate> {\r\n \r\n let url = this.chatUrl + \"chatmessage/translate/\" + chatMessageId + \"/\" + languageTarget;\r\n \r\n return this.http.get<Chat4AppTranslate>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n stopTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n stopTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n \r\n /* Token */\r\n getBearerToken(): string {\r\n \r\n let ret = \"Bearer \" + window.sessionStorage.getItem(\"chat4AppSessionToken\");\r\n \r\n return ret;\r\n }\r\n \r\n \r\n setTokenChat4app(chat4AppSessionToken: string) {\r\n \r\n \r\n window.sessionStorage.setItem(\"chat4AppSessionToken\", chat4AppSessionToken);\r\n }\r\n \r\n \r\n /* Connection */\r\n \r\n onMessageFirebaseReceived(data: any, chatCallback: IChatCallback) {\r\n \r\n \r\n //alert(\"onMessageReceived connectFirebase\");\r\n \r\n if (data.type == \"msg\") {\r\n \r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n chat4appMessage.notification.body = data.body;\r\n \r\n if (data.fileId && data.fileId.length > 0) {\r\n chat4appMessage.data.fileId = data.fileId;\r\n chat4appMessage.data.fileName = data.fileName;\r\n chat4appMessage.data.fileSize = data.fileSize;\r\n chat4appMessage.data.fileType = data.fileType;\r\n \r\n }\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onMessage(chat4appMessage);\r\n \r\n } else if ((data.type == \"on\" || data.type == \"off\")) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onOffline(chat4appMessage);\r\n\r\n } else if (data.type == \"read\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onRead(chat4appMessage);\r\n } else if (data.type == \"startTyping\" || data.type == \"stopTyping\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onStartStopTyping(chat4appMessage);\r\n }\r\n \r\n }\r\n \r\n connectWebsocket(chatCallback: IChatCallback, token: string) {\r\n this.disconnect();\r\n \r\n let securityToken = this.getBearerToken();\r\n \r\n this.sock = new SockJS(this.chatServer + '/stomp/gkz-stomp-endpoint?token=' + securityToken);\r\n this.stompClient = Stomp.over(this.sock);\r\n this.stompClient.debug = function (msg: any) {\r\n //console.log(msg);\r\n }\r\n \r\n this.stompClient.connect({\"X-Authorization\": \"Bearer \" + securityToken}, (frame: any) => {\r\n //console.log(frame);\r\n \r\n this.stompClient.subscribe('/queue/' + token, (msg: any) => {\r\n //console.log('mensagem', msg);\r\n \r\n if (msg.command == \"MESSAGE\") {\r\n \r\n //console.log(msg)\r\n\r\n if (!chatCallback.isTokenFirebaseActive()) {\r\n \r\n let msgObj = JSON.parse(msg.body);\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in msgObj.data) {\r\n datTmp.set(key, msgObj.data[key]);\r\n }\r\n \r\n msgObj.data.all = datTmp;\r\n \r\n if (msgObj.data.type == \"msg\") {\r\n chatCallback.onMessage(msgObj);\r\n } else if ((msgObj.data.type == \"on\" || msgObj.data.type == \"off\")) {\r\n chatCallback.onOffline(msgObj);\r\n } else if (msgObj.data.type == \"read\" ) {\r\n chatCallback.onRead(msgObj);\r\n } else if (msgObj.data.type == \"startTyping\" || msgObj.data.type == \"stopTyping\") {\r\n chatCallback.onStartStopTyping(msgObj);\r\n }\r\n }\r\n\r\n \r\n //callback(msg.body);\r\n // ichatcallback.forEach((iChat)=>{\r\n // iChat.onMessage(JSON.parse(msg.body) );\r\n // });\r\n }\r\n \r\n });\r\n },\r\n (message: any) => {\r\n // check message for disconnect\r\n //console.log(\"Disconnect\");\r\n \r\n setTimeout(() => {\r\n this.connectWebsocket(chatCallback, token);\r\n }, 500);\r\n \r\n });\r\n \r\n }\r\n \r\n disconnect() {\r\n// console.log(\"disconnect\")\r\n try {\r\n if (this.stompClient) {\r\n this.stompClient.disconnect();\r\n }\r\n \r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n convertChat4AppMessageReceiveToChatMessage4App(msg: Chat4AppMessageReceive): ChatMessage4App{\r\n let message = new ChatMessage4App();\r\n message.body = msg.notification.body;\r\n message.chatId = msg.data.chatId;\r\n message.fromId = msg.data.fromId;\r\n message.toId = msg.data.toId;\r\n message.groupId = msg.data.groupId;\r\n message.dateHourIncluded = moment.utc(msg.data.dateHour, \"DD-MM-YYYY hh:mm:ss\").toDate();\r\n message.id = msg.data.chatMessageId;\r\n\r\n if (msg.data.fileId && msg.data.fileId.length > 0) {\r\n let messageFile = new ChatMessageFile4App();\r\n \r\n messageFile.id = msg.data.fileId;\r\n messageFile.name = msg.data.fileName;\r\n messageFile.size = msg.data.fileSize;\r\n messageFile.type = msg.data.fileType;\r\n\r\n message.chatMessageFile = messageFile;\r\n }\r\n\r\n return message;\r\n\r\n }\r\n \r\n }\r\n \r\n \r\n export class Chat4App {\r\n id: string;\r\n configId: string;\r\n externalId: string;\r\n title: string;\r\n status: ChatStatus4App;\r\n users: Array<ChatUser4App>;\r\n \r\n }\r\n export class ChatUser4App {\r\n id: string;\r\n name: string;\r\n clientToken: string;\r\n picturePath: string;\r\n email: string;\r\n externalId: string;\r\n status: ChatUserStatus4App;\r\n }\r\n export class ChatMessage4App {\r\n id: string;\r\n fromId: string;\r\n toId: string;\r\n chatId: string;\r\n title: string;\r\n body: string;\r\n meta: Array<ChatMessageMeta4App>;\r\n groupId: string;\r\n read: Boolean;\r\n dateHourIncluded: Date;\r\n chatMessageFile: ChatMessageFile4App;\r\n }\r\n export class ChatMessageFile4App {\r\n id: string;\r\n name: string;\r\n type: string;\r\n size: number;\r\n fullPath: string;\r\n }\r\n export class ChatMessageMeta4App {\r\n name: string;\r\n value: string;\r\n }\r\n export class Chat4AppMessageReceive {\r\n data: Chat4AppMessageReceiveData = new Chat4AppMessageReceiveData();\r\n notification: Chat4AppMessageReceiveNotification = new Chat4AppMessageReceiveNotification();\r\n token: string;\r\n }\r\n export class Chat4AppMessageReceiveData {\r\n toId: string;\r\n chatId: string;\r\n dateHour: string;\r\n chatMessageId: string;\r\n externalId: string;\r\n type: string;\r\n fromId: string;\r\n groupId: string;\r\n fileId: string;\r\n fileName: string;\r\n fileSize: number;\r\n fileType: string;\r\n all: Map<string, string>;\r\n }\r\n export class Chat4AppMessageReceiveNotification {\r\n body: string;\r\n }\r\n \r\n export class ChatUserResponse4App {\r\n totalMessages: number;\r\n chat: Chat4App;\r\n chatMessage: ChatMessage4App;\r\n chats: ChatUserResponse4App[];\r\n }\r\n export class ChatFilterRequest4App {\r\n type: ChatFilterType;\r\n chatExternalId: string;\r\n chatUserExternalId: string;\r\n groupId: string;\r\n }\r\n export class Chat4AppConfig {\r\n constructor(public endpoint: string) {\r\n \r\n }\r\n }\r\n\r\n export class Chat4AppTranslate {\r\n text: string;\r\n translatedText: string;\r\n originalSourceLanguageCode: string;\r\n sourceLanguageCode: string;\r\n targetLanguageCode: string;\r\n messageId: string;\r\n }\r\n\r\n\r\n \r\n export enum ChatStatus4App {\r\n CREATED = \"CREATED\",\r\n CLOSED = \"CLOSED\"\r\n \r\n }\r\n export enum ChatUserStatus4App {\r\n REMOVED = \"REMOVED\"\r\n \r\n }\r\n export enum ChatFilterType {\r\n COUNT_NOT_READ = 1,\r\n LAST_MESSAGE = 2\r\n }\r\n \r\n export interface IChatCallback {\r\n isTokenFirebaseActive(): Boolean;\r\n onMessage(msg: Chat4AppMessageReceive): void;\r\n onOffline(msg: Chat4AppMessageReceive): void;\r\n onRead(msg: Chat4AppMessageReceive): void;\r\n onStartStopTyping(msg: Chat4AppMessageReceive): void;\r\n\r\n\r\n }\r\n ","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-chat4app-client-angular',\n template: `\n <p>\n chat4app-client-angular works!\n </p>\n `,\n styles: [\n ]\n})\nexport class Chat4appClientAngularComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Chat4appClientAngularComponent } from './chat4app-client-angular.component';\n\n\n\n@NgModule({\n declarations: [Chat4appClientAngularComponent],\n imports: [\n ],\n exports: [Chat4appClientAngularComponent]\n})\nexport class Chat4appClientAngularModule { }\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.service.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.component.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.module.ts"],"names":["Chat4appClientAngularService","http","this","chatServer","chatUrl","prototype","ngOnInit","config","chat4AppConfig","endpoint","init","securityChatToken","callback","chatCallback","connectionClientId","trim","length","Error","setTokenChat4app","connectWebsocket","getChatUrlDownload","messageFileId","getBearerToken","getMessageChat","chatId","fromId","toId","url","get","headers","HttpHeaders","set","getMessageChatByGrop","groupId","addMessageChat","chatMessage4App","post","props","chatFilterRequest4App","removeUsersChat","chatUsersId","chatUsersExternalId","params","Array","forEach","cui","push","cuei","join","delete","removeUserChat","chatUserId","chatUserExternalId","param","updateUserChat","charUser4AppUpdate","put","createUserChat","chatUser4App","createUsersChat","createChat","chat4app","createUpdateChat","getLastMessageGroup","chatExternalId","getLastMessage","countNotReadMessages","getChatByExternalId","externalId","readMessage","chatMessageId","online","sendFile","fileToUpload","formData","FormData","append","sendFileGroup","translateMessage","languageTarget","startTyping","startTypingGroup","stopTyping","stopTypingGroup","window","sessionStorage","getItem","chat4AppSessionToken","setItem","onMessageFirebaseReceived","data","type","chat4appMessage","Chat4AppMessageReceive","dateHour","notification","body","fileId","fileName","fileSize","fileType","datTmp","Map","key","all","onMessage","onOffline","onRead","onStartStopTyping","token","_this","disconnect","securityToken","sock","SockJS","stompClient","Stomp","over","debug","msg","tokenAuth","startsWith","connect","X-Authorization","frame","subscribe","command","isTokenFirebaseActive","msgObj","JSON","parse","message","setTimeout","e","console","log","convertChat4AppMessageReceiveToChatMessage4App","ChatMessage4App","dateHourIncluded","moment","utc","toDate","id","messageFile","ChatMessageFile4App","name","size","chatMessageFile","Injectable","args","providedIn","HttpClient","ChatStatus4App","ChatFilterType","Chat4App","ChatUser4App","ChatMessageMeta4App","Chat4AppMessageReceiveData","Chat4AppMessageReceiveNotification","ChatUserResponse4App","ChatFilterRequest4App","Chat4AppConfig","Chat4AppTranslate","ChatUserStatus4App","Chat4appClientAngularComponent","Component","selector","template","Chat4appClientAngularModule","NgModule","declarations","imports","exports"],"mappings":"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","sourcesContent":["import { Injectable, OnInit } from '@angular/core';\r\nimport * as Stomp from 'stompjs';\r\nimport * as SockJS from 'sockjs-client';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport * as moment from 'moment';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Chat4appClientAngularService implements OnInit {\r\n\r\n chatServer = \"\";\r\n chatUrl = \"\";\r\n \r\n sock: any;\r\n stompClient: any;\r\n\r\n constructor( private http: HttpClient) {\r\n \r\n }\r\n ngOnInit(): void {\r\n }\r\n\r\n config(chat4AppConfig: Chat4AppConfig) {\r\n this.chatServer = chat4AppConfig.endpoint;\r\n this.chatUrl = chat4AppConfig.endpoint + \"/api/v1/\" ;\r\n }\r\n \r\n init(securityChatToken: string, callback: any, chatCallback?: IChatCallback, connectionClientId?: string) {\r\n\r\n if (!this.chatServer || this.chatServer.trim().length == 0){\r\n throw new Error(\"Endpoint is empty\");\r\n }\r\n if (!securityChatToken || securityChatToken.trim().length == 0){\r\n throw new Error(\"SecurityChatToken is empty\");\r\n }\r\n\r\n this.setTokenChat4app(securityChatToken);\r\n \r\n if (chatCallback && connectionClientId) {\r\n this.connectWebsocket(chatCallback, connectionClientId);\r\n }\r\n \r\n callback(securityChatToken);\r\n }\r\n \r\n getChatUrlDownload(messageFileId: string) {\r\n return this.chatUrl + \"chatmessage/getFile?messageFileId=\" + messageFileId + \"&token=\" + this.getBearerToken();\r\n }\r\n \r\n \r\n getMessageChat(chatId: string, fromId: string, toId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n getMessageChatByGrop(chatId: string, groupId: string, fromId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/byGroup/\" + chatId + \"/\" + groupId + \"/\" + fromId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n addMessageChat(chatMessage4App: ChatMessage4App): Observable<ChatMessage4App> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatMessage4App.chatId;\r\n \r\n return this.http.post<ChatMessage4App>(url, chatMessage4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n props(chatFilterRequest4App: Array<ChatFilterRequest4App>): Observable<ChatUserResponse4App[]> {\r\n let url = this.chatUrl + \"chatmessage/props\";\r\n \r\n return this.http.post<ChatUserResponse4App[]>(url, chatFilterRequest4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n removeUsersChat(chatId: string, chatUsersId?: string[], chatUsersExternalId?: string[]): Observable<ChatUser4App[]> {\r\n let params = new Array();\r\n if (chatUsersId && chatUsersId.length > 0) {\r\n \r\n chatUsersId.forEach(cui => {\r\n params.push(\"chatUserId=\" + cui);\r\n });\r\n } else if (chatUsersExternalId && chatUsersExternalId.length > 0) {\r\n chatUsersExternalId.forEach(cuei => {\r\n params.push(\"chatUserExternalId=\" + cuei);\r\n })\r\n \r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + params.join(\"&\");\r\n \r\n return this.http.delete<ChatUser4App[]>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n removeUserChat(chatId: string, chatUserId?: string, chatUserExternalId?: string): Observable<ChatUser4App> {\r\n let param = \"\";\r\n if (chatUserId) {\r\n param = \"chatUserId=\" + chatUserId;\r\n } else {\r\n param = \"chatUserExternalId=\" + chatUserExternalId;\r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + param;\r\n \r\n return this.http.delete<ChatUser4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n updateUserChat(chatId: string, charUser4AppUpdate: ChatUser4App): Observable<ChatUser4App> {\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.put<ChatUser4App>(url, charUser4AppUpdate,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createUserChat(chatId: string, chatUser4App: ChatUser4App): Observable<ChatUser4App> {\r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n createUsersChat(chatId: string, chatUser4App: ChatUser4App[]): Observable<ChatUser4App[]> {\r\n let url = this.chatUrl + \"chatuser/users/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App[]>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.post<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n createUpdateChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.put<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getLastMessageGroup(chatExternalId: string, groupId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessageGroup?chatExternalId=\" + chatExternalId + \"&groupId=\" + groupId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n getLastMessage(chatExternalId: string, chatUserExternalId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessage?chatExternalId=\" + chatExternalId + \"&chatUserExternalId=\" + chatUserExternalId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n countNotReadMessages(chatUserExternalId: string, chatExternalId?: string, groupId?: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/countNotReadMessages?chatUserExternalId=\" + chatUserExternalId;\r\n \r\n if (chatExternalId && chatExternalId.length > 0) {\r\n url += \"&chatExternalId=\" + chatExternalId;\r\n }\r\n \r\n if (groupId && groupId.length > 0) {\r\n url += \"&groupId=\" + groupId;\r\n }\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getChatByExternalId(externalId: string): Observable<Chat4App> {\r\n \r\n let url = this.chatUrl + \"chat?externalId=\" + externalId;\r\n \r\n return this.http.get<Chat4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n readMessage(chatMessageId: string, toId?: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/read/\" + chatMessageId;\r\n \r\n if (toId && toId.length > 0) {\r\n url += \"/\" + toId;\r\n }\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n online(chatId: string, chatUserId: string): Observable<number> {\r\n \r\n let url = this.chatUrl + \"chatmessage/online/\" + chatId + \"/\" + chatUserId;\r\n \r\n return this.http.get<number>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n sendFile(chatId: string, fromId: string, toId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFile/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n \r\n sendFileGroup(chatId: string, fromId: string, groupId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFileGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n\r\n translateMessage(chatMessageId: string, languageTarget: string): Observable<Chat4AppTranslate> {\r\n \r\n let url = this.chatUrl + \"chatmessage/translate/\" + chatMessageId + \"/\" + languageTarget;\r\n \r\n return this.http.get<Chat4AppTranslate>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n stopTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n stopTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n \r\n /* Token */\r\n getBearerToken(): string {\r\n \r\n let ret = \"Bearer \" + window.sessionStorage.getItem(\"chat4AppSessionToken\");\r\n \r\n return ret;\r\n }\r\n \r\n \r\n setTokenChat4app(chat4AppSessionToken: string) {\r\n \r\n \r\n window.sessionStorage.setItem(\"chat4AppSessionToken\", chat4AppSessionToken);\r\n }\r\n \r\n \r\n /* Connection */\r\n \r\n onMessageFirebaseReceived(data: any, chatCallback: IChatCallback) {\r\n \r\n \r\n //alert(\"onMessageReceived connectFirebase\");\r\n \r\n if (data.type == \"msg\") {\r\n \r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n chat4appMessage.notification.body = data.body;\r\n \r\n if (data.fileId && data.fileId.length > 0) {\r\n chat4appMessage.data.fileId = data.fileId;\r\n chat4appMessage.data.fileName = data.fileName;\r\n chat4appMessage.data.fileSize = data.fileSize;\r\n chat4appMessage.data.fileType = data.fileType;\r\n \r\n }\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onMessage(chat4appMessage);\r\n \r\n } else if ((data.type == \"on\" || data.type == \"off\")) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onOffline(chat4appMessage);\r\n\r\n } else if (data.type == \"read\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onRead(chat4appMessage);\r\n } else if (data.type == \"startTyping\" || data.type == \"stopTyping\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onStartStopTyping(chat4appMessage);\r\n }\r\n \r\n }\r\n \r\n connectWebsocket(chatCallback: IChatCallback, token: string) {\r\n this.disconnect();\r\n \r\n let securityToken = this.getBearerToken();\r\n \r\n this.sock = new SockJS(this.chatServer + '/stomp/gkz-stomp-endpoint?token=' + securityToken);\r\n this.stompClient = Stomp.over(this.sock);\r\n this.stompClient.debug = function (msg: any) {\r\n //console.log(msg);\r\n }\r\n\r\n let tokenAuth = \"\";\r\n\r\n if (securityToken && securityToken.startsWith(\"Bearer \")){\r\n tokenAuth = securityToken;\r\n } else {\r\n tokenAuth = \"Bearer \" + securityToken;\r\n }\r\n \r\n this.stompClient.connect({\"X-Authorization\": tokenAuth}, (frame: any) => {\r\n //console.log(frame);\r\n \r\n this.stompClient.subscribe('/queue/' + token, (msg: any) => {\r\n //console.log('mensagem', msg);\r\n \r\n if (msg.command == \"MESSAGE\") {\r\n \r\n //console.log(msg)\r\n\r\n if (!chatCallback.isTokenFirebaseActive()) {\r\n \r\n let msgObj = JSON.parse(msg.body);\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in msgObj.data) {\r\n datTmp.set(key, msgObj.data[key]);\r\n }\r\n \r\n msgObj.data.all = datTmp;\r\n \r\n if (msgObj.data.type == \"msg\") {\r\n chatCallback.onMessage(msgObj);\r\n } else if ((msgObj.data.type == \"on\" || msgObj.data.type == \"off\")) {\r\n chatCallback.onOffline(msgObj);\r\n } else if (msgObj.data.type == \"read\" ) {\r\n chatCallback.onRead(msgObj);\r\n } else if (msgObj.data.type == \"startTyping\" || msgObj.data.type == \"stopTyping\") {\r\n chatCallback.onStartStopTyping(msgObj);\r\n }\r\n }\r\n\r\n \r\n //callback(msg.body);\r\n // ichatcallback.forEach((iChat)=>{\r\n // iChat.onMessage(JSON.parse(msg.body) );\r\n // });\r\n }\r\n \r\n });\r\n },\r\n (message: any) => {\r\n // check message for disconnect\r\n //console.log(\"Disconnect\");\r\n \r\n setTimeout(() => {\r\n this.connectWebsocket(chatCallback, token);\r\n }, 500);\r\n \r\n });\r\n \r\n }\r\n \r\n disconnect() {\r\n// console.log(\"disconnect\")\r\n try {\r\n if (this.stompClient) {\r\n this.stompClient.disconnect();\r\n }\r\n \r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n convertChat4AppMessageReceiveToChatMessage4App(msg: Chat4AppMessageReceive): ChatMessage4App{\r\n let message = new ChatMessage4App();\r\n message.body = msg.notification.body;\r\n message.chatId = msg.data.chatId;\r\n message.fromId = msg.data.fromId;\r\n message.toId = msg.data.toId;\r\n message.groupId = msg.data.groupId;\r\n message.dateHourIncluded = moment.utc(msg.data.dateHour, \"DD-MM-YYYY hh:mm:ss\").toDate();\r\n message.id = msg.data.chatMessageId;\r\n\r\n if (msg.data.fileId && msg.data.fileId.length > 0) {\r\n let messageFile = new ChatMessageFile4App();\r\n \r\n messageFile.id = msg.data.fileId;\r\n messageFile.name = msg.data.fileName;\r\n messageFile.size = msg.data.fileSize;\r\n messageFile.type = msg.data.fileType;\r\n\r\n message.chatMessageFile = messageFile;\r\n }\r\n\r\n return message;\r\n\r\n }\r\n \r\n }\r\n \r\n \r\n export class Chat4App {\r\n id: string;\r\n configId: string;\r\n externalId: string;\r\n title: string;\r\n status: ChatStatus4App;\r\n users: Array<ChatUser4App>;\r\n \r\n }\r\n export class ChatUser4App {\r\n id: string;\r\n name: string;\r\n clientToken: string;\r\n picturePath: string;\r\n email: string;\r\n externalId: string;\r\n status: ChatUserStatus4App;\r\n }\r\n export class ChatMessage4App {\r\n id: string;\r\n fromId: string;\r\n toId: string;\r\n chatId: string;\r\n title: string;\r\n body: string;\r\n meta: Array<ChatMessageMeta4App>;\r\n groupId: string;\r\n read: Boolean;\r\n dateHourIncluded: Date;\r\n chatMessageFile: ChatMessageFile4App;\r\n }\r\n export class ChatMessageFile4App {\r\n id: string;\r\n name: string;\r\n type: string;\r\n size: number;\r\n fullPath: string;\r\n }\r\n export class ChatMessageMeta4App {\r\n name: string;\r\n value: string;\r\n }\r\n export class Chat4AppMessageReceive {\r\n data: Chat4AppMessageReceiveData = new Chat4AppMessageReceiveData();\r\n notification: Chat4AppMessageReceiveNotification = new Chat4AppMessageReceiveNotification();\r\n token: string;\r\n }\r\n export class Chat4AppMessageReceiveData {\r\n toId: string;\r\n chatId: string;\r\n dateHour: string;\r\n chatMessageId: string;\r\n externalId: string;\r\n type: string;\r\n fromId: string;\r\n groupId: string;\r\n fileId: string;\r\n fileName: string;\r\n fileSize: number;\r\n fileType: string;\r\n all: Map<string, string>;\r\n }\r\n export class Chat4AppMessageReceiveNotification {\r\n body: string;\r\n }\r\n \r\n export class ChatUserResponse4App {\r\n totalMessages: number;\r\n chat: Chat4App;\r\n chatMessage: ChatMessage4App;\r\n chats: ChatUserResponse4App[];\r\n }\r\n export class ChatFilterRequest4App {\r\n type: ChatFilterType;\r\n chatExternalId: string;\r\n chatUserExternalId: string;\r\n groupId: string;\r\n }\r\n export class Chat4AppConfig {\r\n constructor(public endpoint: string) {\r\n \r\n }\r\n }\r\n\r\n export class Chat4AppTranslate {\r\n text: string;\r\n translatedText: string;\r\n originalSourceLanguageCode: string;\r\n sourceLanguageCode: string;\r\n targetLanguageCode: string;\r\n messageId: string;\r\n }\r\n\r\n\r\n \r\n export enum ChatStatus4App {\r\n CREATED = \"CREATED\",\r\n CLOSED = \"CLOSED\"\r\n \r\n }\r\n export enum ChatUserStatus4App {\r\n REMOVED = \"REMOVED\"\r\n \r\n }\r\n export enum ChatFilterType {\r\n COUNT_NOT_READ = 1,\r\n LAST_MESSAGE = 2\r\n }\r\n \r\n export interface IChatCallback {\r\n isTokenFirebaseActive(): Boolean;\r\n onMessage(msg: Chat4AppMessageReceive): void;\r\n onOffline(msg: Chat4AppMessageReceive): void;\r\n onRead(msg: Chat4AppMessageReceive): void;\r\n onStartStopTyping(msg: Chat4AppMessageReceive): void;\r\n\r\n\r\n }\r\n ","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-chat4app-client-angular',\n template: `\n <p>\n chat4app-client-angular works!\n </p>\n `,\n styles: [\n ]\n})\nexport class Chat4appClientAngularComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Chat4appClientAngularComponent } from './chat4app-client-angular.component';\n\n\n\n@NgModule({\n declarations: [Chat4appClientAngularComponent],\n imports: [\n ],\n exports: [Chat4appClientAngularComponent]\n})\nexport class Chat4appClientAngularModule { }\n"]}
|
|
@@ -305,7 +305,14 @@ export class Chat4appClientAngularService {
|
|
|
305
305
|
this.stompClient.debug = function (msg) {
|
|
306
306
|
//console.log(msg);
|
|
307
307
|
};
|
|
308
|
-
|
|
308
|
+
let tokenAuth = "";
|
|
309
|
+
if (securityToken && securityToken.startsWith("Bearer ")) {
|
|
310
|
+
tokenAuth = securityToken;
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
tokenAuth = "Bearer " + securityToken;
|
|
314
|
+
}
|
|
315
|
+
this.stompClient.connect({ "X-Authorization": tokenAuth }, (frame) => {
|
|
309
316
|
//console.log(frame);
|
|
310
317
|
this.stompClient.subscribe('/queue/' + token, (msg) => {
|
|
311
318
|
//console.log('mensagem', msg);
|
|
@@ -430,4 +437,4 @@ export var ChatFilterType;
|
|
|
430
437
|
ChatFilterType[ChatFilterType["COUNT_NOT_READ"] = 1] = "COUNT_NOT_READ";
|
|
431
438
|
ChatFilterType[ChatFilterType["LAST_MESSAGE"] = 2] = "LAST_MESSAGE";
|
|
432
439
|
})(ChatFilterType || (ChatFilterType = {}));
|
|
433
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdDRhcHAtY2xpZW50LWFuZ3VsYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQ0YXBwLWNsaWVudC1hbmd1bGFyL3NyYy9saWIvY2hhdDRhcHAtY2xpZW50LWFuZ3VsYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7OztBQU9qQyxNQUFNLE9BQU8sNEJBQTRCO0lBUXJDLFlBQXFCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFOckMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixZQUFPLEdBQUcsRUFBRSxDQUFDO0lBT2IsQ0FBQztJQUNELFFBQVE7SUFDUixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQThCO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFFO0lBQ3ZELENBQUM7SUFFRCxJQUFJLENBQUMsaUJBQXlCLEVBQUUsUUFBYSxFQUFFLFlBQTRCLEVBQUUsa0JBQTJCO1FBRXBHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztZQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsaUJBQWlC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bkMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtDQU83QjtBQUlELE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIscUNBQW1CLENBQUE7SUFDbkIsbUNBQWlCLENBQUE7QUFFbkIsQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBQ0QsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUM1Qix5Q0FBbUIsQ0FBQTtBQUVyQixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QjtBQUNELE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsdUVBQWtCLENBQUE7SUFDbEIsbUVBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIFN0b21wIGZyb20gJ3N0b21wanMnO1xyXG5pbXBvcnQgKiBhcyBTb2NrSlMgZnJvbSAnc29ja2pzLWNsaWVudCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGF0NGFwcENsaWVudEFuZ3VsYXJTZXJ2aWNlIGltcGxlbWVudHMgT25Jbml0ICB7XHJcblxyXG4gICAgY2hhdFNlcnZlciA9IFwiXCI7XHJcbiAgICBjaGF0VXJsID0gXCJcIjtcclxuICAgIFxyXG4gICAgc29jazogYW55O1xyXG4gICAgc3RvbXBDbGllbnQ6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgXHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIH1cclxuXHJcbiAgICBjb25maWcoY2hhdDRBcHBDb25maWc6IENoYXQ0QXBwQ29uZmlnKSB7XHJcbiAgICAgIHRoaXMuY2hhdFNlcnZlciA9IGNoYXQ0QXBwQ29uZmlnLmVuZHBvaW50O1xyXG4gICAgICB0aGlzLmNoYXRVcmwgPSBjaGF0NEFwcENvbmZpZy5lbmRwb2ludCArIFwiL2FwaS92MS9cIiA7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBpbml0KHNlY3VyaXR5Q2hhdFRva2VuOiBzdHJpbmcsIGNhbGxiYWNrOiBhbnksIGNoYXRDYWxsYmFjaz86IElDaGF0Q2FsbGJhY2ssIGNvbm5lY3Rpb25DbGllbnRJZD86IHN0cmluZykge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2hhdFNlcnZlciB8fCB0aGlzLmNoYXRTZXJ2ZXIudHJpbSgpLmxlbmd0aCA9PSAwKXtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVuZHBvaW50IGlzIGVtcHR5XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXNlY3VyaXR5Q2hhdFRva2VuIHx8IHNlY3VyaXR5Q2hhdFRva2VuLnRyaW0oKS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZWN1cml0eUNoYXRUb2tlbiBpcyBlbXB0eVwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2V0VG9rZW5DaGF0NGFwcChzZWN1cml0eUNoYXRUb2tlbik7XHJcbiAgXHJcbiAgICAgICAgaWYgKGNoYXRDYWxsYmFjayAmJiBjb25uZWN0aW9uQ2xpZW50SWQpIHtcclxuICAgICAgICAgIHRoaXMuY29ubmVjdFdlYnNvY2tldChjaGF0Q2FsbGJhY2ssIGNvbm5lY3Rpb25DbGllbnRJZCk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGNhbGxiYWNrKHNlY3VyaXR5Q2hhdFRva2VuKTtcclxuICAgIH1cclxuICBcclxuICAgIGdldENoYXRVcmxEb3dubG9hZChtZXNzYWdlRmlsZUlkOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvZ2V0RmlsZT9tZXNzYWdlRmlsZUlkPVwiICsgbWVzc2FnZUZpbGVJZCArIFwiJnRva2VuPVwiICsgdGhpcy5nZXRCZWFyZXJUb2tlbigpO1xyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgZ2V0TWVzc2FnZUNoYXQoY2hhdElkOiBzdHJpbmcsIGZyb21JZDogc3RyaW5nLCB0b0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PENoYXRNZXNzYWdlNEFwcD4+IHtcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgdG9JZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXJyYXk8Q2hhdE1lc3NhZ2U0QXBwPj4odXJsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gIFxyXG4gICAgfVxyXG4gICAgZ2V0TWVzc2FnZUNoYXRCeUdyb3AoY2hhdElkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZywgZnJvbUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PENoYXRNZXNzYWdlNEFwcD4+IHtcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvYnlHcm91cC9cIiArIGNoYXRJZCArIFwiL1wiICsgZ3JvdXBJZCArIFwiL1wiICsgZnJvbUlkO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcnJheTxDaGF0TWVzc2FnZTRBcHA+Pih1cmwsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgXHJcbiAgICB9XHJcbiAgXHJcbiAgXHJcbiAgICBhZGRNZXNzYWdlQ2hhdChjaGF0TWVzc2FnZTRBcHA6IENoYXRNZXNzYWdlNEFwcCk6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2U0QXBwPiB7XHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL1wiICsgY2hhdE1lc3NhZ2U0QXBwLmNoYXRJZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENoYXRNZXNzYWdlNEFwcD4odXJsLCBjaGF0TWVzc2FnZTRBcHAsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgXHJcbiAgICB9XHJcbiAgICBwcm9wcyhjaGF0RmlsdGVyUmVxdWVzdDRBcHA6IEFycmF5PENoYXRGaWx0ZXJSZXF1ZXN0NEFwcD4pOiBPYnNlcnZhYmxlPENoYXRVc2VyUmVzcG9uc2U0QXBwW10+IHtcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvcHJvcHNcIjtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENoYXRVc2VyUmVzcG9uc2U0QXBwW10+KHVybCwgY2hhdEZpbHRlclJlcXVlc3Q0QXBwLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgcmVtb3ZlVXNlcnNDaGF0KGNoYXRJZDogc3RyaW5nLCBjaGF0VXNlcnNJZD86IHN0cmluZ1tdLCBjaGF0VXNlcnNFeHRlcm5hbElkPzogc3RyaW5nW10pOiBPYnNlcnZhYmxlPENoYXRVc2VyNEFwcFtdPiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgaWYgKGNoYXRVc2Vyc0lkICYmIGNoYXRVc2Vyc0lkLmxlbmd0aCA+IDApIHtcclxuICBcclxuICAgICAgICBjaGF0VXNlcnNJZC5mb3JFYWNoKGN1aSA9PiB7XHJcbiAgICAgICAgICBwYXJhbXMucHVzaChcImNoYXRVc2VySWQ9XCIgKyBjdWkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGNoYXRVc2Vyc0V4dGVybmFsSWQgJiYgY2hhdFVzZXJzRXh0ZXJuYWxJZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY2hhdFVzZXJzRXh0ZXJuYWxJZC5mb3JFYWNoKGN1ZWkgPT4ge1xyXG4gICAgICAgICAgcGFyYW1zLnB1c2goXCJjaGF0VXNlckV4dGVybmFsSWQ9XCIgKyBjdWVpKTtcclxuICAgICAgICB9KVxyXG4gIFxyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXR1c2VyL1wiICsgY2hhdElkICsgXCI/XCIgKyBwYXJhbXMuam9pbihcIiZcIik7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPENoYXRVc2VyNEFwcFtdPih1cmwsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgXHJcbiAgICByZW1vdmVVc2VyQ2hhdChjaGF0SWQ6IHN0cmluZywgY2hhdFVzZXJJZD86IHN0cmluZywgY2hhdFVzZXJFeHRlcm5hbElkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxDaGF0VXNlcjRBcHA+IHtcclxuICAgICAgbGV0IHBhcmFtID0gXCJcIjtcclxuICAgICAgaWYgKGNoYXRVc2VySWQpIHtcclxuICAgICAgICBwYXJhbSA9IFwiY2hhdFVzZXJJZD1cIiArIGNoYXRVc2VySWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW0gPSBcImNoYXRVc2VyRXh0ZXJuYWxJZD1cIiArIGNoYXRVc2VyRXh0ZXJuYWxJZDtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0dXNlci9cIiArIGNoYXRJZCArIFwiP1wiICsgcGFyYW07XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPENoYXRVc2VyNEFwcD4odXJsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIFxyXG4gICAgdXBkYXRlVXNlckNoYXQoY2hhdElkOiBzdHJpbmcsIGNoYXJVc2VyNEFwcFVwZGF0ZTogQ2hhdFVzZXI0QXBwKTogT2JzZXJ2YWJsZTxDaGF0VXNlcjRBcHA+IHtcclxuICBcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdHVzZXIvXCIgKyBjaGF0SWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PENoYXRVc2VyNEFwcD4odXJsLCBjaGFyVXNlcjRBcHBVcGRhdGUsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgXHJcbiAgXHJcbiAgICBjcmVhdGVVc2VyQ2hhdChjaGF0SWQ6IHN0cmluZywgY2hhdFVzZXI0QXBwOiBDaGF0VXNlcjRBcHApOiBPYnNlcnZhYmxlPENoYXRVc2VyNEFwcD4ge1xyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0dXNlci9cIiArIGNoYXRJZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENoYXRVc2VyNEFwcD4odXJsLCBjaGF0VXNlcjRBcHAsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgXHJcbiAgICBjcmVhdGVVc2Vyc0NoYXQoY2hhdElkOiBzdHJpbmcsIGNoYXRVc2VyNEFwcDogQ2hhdFVzZXI0QXBwW10pOiBPYnNlcnZhYmxlPENoYXRVc2VyNEFwcFtdPiB7XHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXR1c2VyL3VzZXJzL1wiICsgY2hhdElkO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q2hhdFVzZXI0QXBwW10+KHVybCwgY2hhdFVzZXI0QXBwLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgY3JlYXRlQ2hhdChjaGF0NGFwcDogQ2hhdDRBcHApOiBPYnNlcnZhYmxlPENoYXQ0QXBwPiB7XHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRcIjtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENoYXQ0QXBwPih1cmwsIGNoYXQ0YXBwLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgY3JlYXRlVXBkYXRlQ2hhdChjaGF0NGFwcDogQ2hhdDRBcHApOiBPYnNlcnZhYmxlPENoYXQ0QXBwPiB7XHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRcIjtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8Q2hhdDRBcHA+KHVybCwgY2hhdDRhcHAsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgXHJcbiAgXHJcbiAgICBnZXRMYXN0TWVzc2FnZUdyb3VwKGNoYXRFeHRlcm5hbElkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q2hhdFVzZXJSZXNwb25zZTRBcHA+IHtcclxuICBcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvbGFzdE1lc3NhZ2VHcm91cD9jaGF0RXh0ZXJuYWxJZD1cIiArIGNoYXRFeHRlcm5hbElkICsgXCImZ3JvdXBJZD1cIiArIGdyb3VwSWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENoYXRVc2VyUmVzcG9uc2U0QXBwPih1cmwsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBnZXRMYXN0TWVzc2FnZShjaGF0RXh0ZXJuYWxJZDogc3RyaW5nLCBjaGF0VXNlckV4dGVybmFsSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q2hhdFVzZXJSZXNwb25zZTRBcHA+IHtcclxuICBcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvbGFzdE1lc3NhZ2U/Y2hhdEV4dGVybmFsSWQ9XCIgKyBjaGF0RXh0ZXJuYWxJZCArIFwiJmNoYXRVc2VyRXh0ZXJuYWxJZD1cIiArIGNoYXRVc2VyRXh0ZXJuYWxJZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Q2hhdFVzZXJSZXNwb25zZTRBcHA+KHVybCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIGNvdW50Tm90UmVhZE1lc3NhZ2VzKGNoYXRVc2VyRXh0ZXJuYWxJZDogc3RyaW5nLCBjaGF0RXh0ZXJuYWxJZD86IHN0cmluZywgZ3JvdXBJZD86IHN0cmluZyk6IE9ic2VydmFibGU8Q2hhdFVzZXJSZXNwb25zZTRBcHA+IHtcclxuICBcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvY291bnROb3RSZWFkTWVzc2FnZXM/Y2hhdFVzZXJFeHRlcm5hbElkPVwiICsgY2hhdFVzZXJFeHRlcm5hbElkO1xyXG4gIFxyXG4gICAgICBpZiAoY2hhdEV4dGVybmFsSWQgJiYgY2hhdEV4dGVybmFsSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHVybCArPSBcIiZjaGF0RXh0ZXJuYWxJZD1cIiArIGNoYXRFeHRlcm5hbElkO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIGlmIChncm91cElkICYmIGdyb3VwSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHVybCArPSBcIiZncm91cElkPVwiICsgZ3JvdXBJZDtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDaGF0VXNlclJlc3BvbnNlNEFwcD4odXJsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgZ2V0Q2hhdEJ5RXh0ZXJuYWxJZChleHRlcm5hbElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENoYXQ0QXBwPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXQ/ZXh0ZXJuYWxJZD1cIiArIGV4dGVybmFsSWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENoYXQ0QXBwPih1cmwsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICByZWFkTWVzc2FnZShjaGF0TWVzc2FnZUlkOiBzdHJpbmcsIHRvSWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICBcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvcmVhZC9cIiArIGNoYXRNZXNzYWdlSWQ7XHJcbiAgXHJcbiAgICAgIGlmICh0b0lkICYmIHRvSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHVybCArPSBcIi9cIiArIHRvSWQ7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8dm9pZD4odXJsLCBudWxsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgb25saW5lKGNoYXRJZDogc3RyaW5nLCBjaGF0VXNlcklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gIFxyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9vbmxpbmUvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGNoYXRVc2VySWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PG51bWJlcj4odXJsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgc2VuZEZpbGUoY2hhdElkOiBzdHJpbmcsIGZyb21JZDogc3RyaW5nLCB0b0lkOiBzdHJpbmcsIGZpbGVUb1VwbG9hZDogRmlsZSk6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2VGaWxlNEFwcD4ge1xyXG4gICAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2Uvc2VuZEZpbGUvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgdG9JZDtcclxuICBcclxuICAgICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGVUb1VwbG9hZCk7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAucG9zdDxDaGF0TWVzc2FnZUZpbGU0QXBwPihlbmRwb2ludCwgZm9ybURhdGEsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgc2VuZEZpbGVHcm91cChjaGF0SWQ6IHN0cmluZywgZnJvbUlkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZywgZmlsZVRvVXBsb2FkOiBGaWxlKTogT2JzZXJ2YWJsZTxDaGF0TWVzc2FnZUZpbGU0QXBwPiB7XHJcbiAgICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9zZW5kRmlsZUdyb3VwL1wiICsgY2hhdElkICsgXCIvXCIgKyBmcm9tSWQgKyBcIi9cIiArIGdyb3VwSWQ7XHJcbiAgXHJcbiAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlVG9VcGxvYWQpO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgLnBvc3Q8Q2hhdE1lc3NhZ2VGaWxlNEFwcD4oZW5kcG9pbnQsIGZvcm1EYXRhLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFuc2xhdGVNZXNzYWdlKGNoYXRNZXNzYWdlSWQ6IHN0cmluZywgbGFuZ3VhZ2VUYXJnZXQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q2hhdDRBcHBUcmFuc2xhdGU+IHtcclxuICBcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvdHJhbnNsYXRlL1wiICsgY2hhdE1lc3NhZ2VJZCArIFwiL1wiICsgbGFuZ3VhZ2VUYXJnZXQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENoYXQ0QXBwVHJhbnNsYXRlPih1cmwsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUeXBpbmcoY2hhdElkOiBzdHJpbmcsZnJvbUlkOiBzdHJpbmcsIHRvSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gIFxyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9zdGFydFR5cGluZy9cIiArIGNoYXRJZCArIFwiL1wiICsgZnJvbUlkICsgXCIvXCIgKyB0b0lkO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDx2b2lkPih1cmwsIG51bGwsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUeXBpbmdHcm91cChjaGF0SWQ6IHN0cmluZyxmcm9tSWQ6IHN0cmluZywgZ3JvdXBJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3N0YXJ0VHlwaW5nR3JvdXAvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgZ3JvdXBJZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8dm9pZD4odXJsLCBudWxsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgc3RvcFR5cGluZyhjaGF0SWQ6IHN0cmluZyxmcm9tSWQ6IHN0cmluZywgdG9JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3N0b3BUeXBpbmcvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgdG9JZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8dm9pZD4odXJsLCBudWxsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHN0b3BUeXBpbmdHcm91cChjaGF0SWQ6IHN0cmluZyxmcm9tSWQ6IHN0cmluZywgZ3JvdXBJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3N0b3BUeXBpbmdHcm91cC9cIiArIGNoYXRJZCArIFwiL1wiICsgZnJvbUlkICsgXCIvXCIgKyBncm91cElkO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDx2b2lkPih1cmwsIG51bGwsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIFxyXG4gICAgLyogVG9rZW4gKi9cclxuICAgIGdldEJlYXJlclRva2VuKCk6IHN0cmluZyB7XHJcbiAgXHJcbiAgICAgIGxldCByZXQgPSBcIkJlYXJlciBcIiArIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwiY2hhdDRBcHBTZXNzaW9uVG9rZW5cIik7XHJcbiAgXHJcbiAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbiAgXHJcbiAgXHJcbiAgICBzZXRUb2tlbkNoYXQ0YXBwKGNoYXQ0QXBwU2Vzc2lvblRva2VuOiBzdHJpbmcpIHtcclxuICBcclxuICBcclxuICAgICAgd2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJjaGF0NEFwcFNlc3Npb25Ub2tlblwiLCBjaGF0NEFwcFNlc3Npb25Ub2tlbik7XHJcbiAgICB9XHJcbiAgXHJcbiAgXHJcbiAgICAvKiBDb25uZWN0aW9uICovXHJcbiAgXHJcbiAgICBvbk1lc3NhZ2VGaXJlYmFzZVJlY2VpdmVkKGRhdGE6IGFueSwgY2hhdENhbGxiYWNrOiBJQ2hhdENhbGxiYWNrKSB7XHJcbiAgXHJcbiAgXHJcbiAgICAgIC8vYWxlcnQoXCJvbk1lc3NhZ2VSZWNlaXZlZCBjb25uZWN0RmlyZWJhc2VcIik7XHJcbiAgXHJcbiAgICAgIGlmIChkYXRhLnR5cGUgPT0gXCJtc2dcIikge1xyXG4gIFxyXG4gICAgICAgIGxldCBjaGF0NGFwcE1lc3NhZ2UgPSBuZXcgQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZSgpO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmNoYXRJZCA9IGRhdGEuY2hhdElkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmNoYXRNZXNzYWdlSWQgPSBkYXRhLmNoYXRNZXNzYWdlSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZXh0ZXJuYWxJZCA9IGRhdGEuZXh0ZXJuYWxJZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5mcm9tSWQgPSBkYXRhLmZyb21JZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50b0lkID0gZGF0YS50b0lkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmdyb3VwSWQgPSBkYXRhLmdyb3VwSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZGF0ZUhvdXIgPSBkYXRhLmRhdGVIb3VyO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLnR5cGUgPSBkYXRhLnR5cGU7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLm5vdGlmaWNhdGlvbi5ib2R5ID0gZGF0YS5ib2R5O1xyXG4gIFxyXG4gICAgICAgIGlmIChkYXRhLmZpbGVJZCAmJiBkYXRhLmZpbGVJZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5maWxlSWQgPSBkYXRhLmZpbGVJZDtcclxuICAgICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmZpbGVOYW1lID0gZGF0YS5maWxlTmFtZTtcclxuICAgICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmZpbGVTaXplID0gZGF0YS5maWxlU2l6ZTtcclxuICAgICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmZpbGVUeXBlID0gZGF0YS5maWxlVHlwZTtcclxuICBcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgbGV0IGRhdFRtcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgXHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgIGRhdFRtcC5zZXQoa2V5LCBkYXRhW2tleV0pO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5hbGwgPSBkYXRUbXA7XHJcbiAgXHJcbiAgICAgICAgY2hhdENhbGxiYWNrLm9uTWVzc2FnZShjaGF0NGFwcE1lc3NhZ2UpO1xyXG4gIFxyXG4gICAgICB9IGVsc2UgaWYgKChkYXRhLnR5cGUgPT0gXCJvblwiIHx8IGRhdGEudHlwZSA9PSBcIm9mZlwiKSkge1xyXG4gICAgICAgIGxldCBjaGF0NGFwcE1lc3NhZ2UgPSBuZXcgQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZSgpO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmNoYXRJZCA9IGRhdGEuY2hhdElkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmNoYXRNZXNzYWdlSWQgPSBkYXRhLmNoYXRNZXNzYWdlSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZXh0ZXJuYWxJZCA9IGRhdGEuZXh0ZXJuYWxJZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5mcm9tSWQgPSBkYXRhLmZyb21JZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50b0lkID0gZGF0YS50b0lkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmdyb3VwSWQgPSBkYXRhLmdyb3VwSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZGF0ZUhvdXIgPSBkYXRhLmRhdGVIb3VyO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLnR5cGUgPSBkYXRhLnR5cGU7XHJcblxyXG4gICAgICAgIGxldCBkYXRUbXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG4gIFxyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICBkYXRUbXAuc2V0KGtleSwgZGF0YVtrZXldKTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuYWxsID0gZGF0VG1wO1xyXG4gIFxyXG4gICAgICAgIGNoYXRDYWxsYmFjay5vbk9mZmxpbmUoY2hhdDRhcHBNZXNzYWdlKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09IFwicmVhZFwiICkge1xyXG4gICAgICAgIGxldCBjaGF0NGFwcE1lc3NhZ2UgPSBuZXcgQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZSgpO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmNoYXRJZCA9IGRhdGEuY2hhdElkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmNoYXRNZXNzYWdlSWQgPSBkYXRhLmNoYXRNZXNzYWdlSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZXh0ZXJuYWxJZCA9IGRhdGEuZXh0ZXJuYWxJZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5mcm9tSWQgPSBkYXRhLmZyb21JZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50b0lkID0gZGF0YS50b0lkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmdyb3VwSWQgPSBkYXRhLmdyb3VwSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZGF0ZUhvdXIgPSBkYXRhLmRhdGVIb3VyO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLnR5cGUgPSBkYXRhLnR5cGU7XHJcblxyXG4gICAgICAgIGxldCBkYXRUbXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG4gIFxyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICBkYXRUbXAuc2V0KGtleSwgZGF0YVtrZXldKTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuYWxsID0gZGF0VG1wO1xyXG4gIFxyXG4gICAgICAgIGNoYXRDYWxsYmFjay5vblJlYWQoY2hhdDRhcHBNZXNzYWdlKTtcclxuICAgICAgfSBlbHNlIGlmIChkYXRhLnR5cGUgPT0gXCJzdGFydFR5cGluZ1wiIHx8IGRhdGEudHlwZSA9PSBcInN0b3BUeXBpbmdcIiApIHtcclxuICAgICAgICBsZXQgY2hhdDRhcHBNZXNzYWdlID0gbmV3IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmUoKTtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0SWQgPSBkYXRhLmNoYXRJZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0TWVzc2FnZUlkID0gZGF0YS5jaGF0TWVzc2FnZUlkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmV4dGVybmFsSWQgPSBkYXRhLmV4dGVybmFsSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZnJvbUlkID0gZGF0YS5mcm9tSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEudG9JZCA9IGRhdGEudG9JZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5ncm91cElkID0gZGF0YS5ncm91cElkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmRhdGVIb3VyID0gZGF0YS5kYXRlSG91cjtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50eXBlID0gZGF0YS50eXBlO1xyXG5cclxuICAgICAgICBsZXQgZGF0VG1wID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICBcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgZGF0VG1wLnNldChrZXksIGRhdGFba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmFsbCA9IGRhdFRtcDtcclxuICBcclxuICAgICAgICBjaGF0Q2FsbGJhY2sub25TdGFydFN0b3BUeXBpbmcoY2hhdDRhcHBNZXNzYWdlKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgY29ubmVjdFdlYnNvY2tldChjaGF0Q2FsbGJhY2s6IElDaGF0Q2FsbGJhY2ssIHRva2VuOiBzdHJpbmcpIHtcclxuICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XHJcbiAgXHJcbiAgICAgIGxldCBzZWN1cml0eVRva2VuID0gdGhpcy5nZXRCZWFyZXJUb2tlbigpO1xyXG4gIFxyXG4gICAgICB0aGlzLnNvY2sgPSBuZXcgU29ja0pTKHRoaXMuY2hhdFNlcnZlciArICcvc3RvbXAvZ2t6LXN0b21wLWVuZHBvaW50P3Rva2VuPScgKyBzZWN1cml0eVRva2VuKTtcclxuICAgICAgdGhpcy5zdG9tcENsaWVudCA9IFN0b21wLm92ZXIodGhpcy5zb2NrKTtcclxuICAgICAgdGhpcy5zdG9tcENsaWVudC5kZWJ1ZyA9IGZ1bmN0aW9uIChtc2c6IGFueSkge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2cobXNnKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICB0aGlzLnN0b21wQ2xpZW50LmNvbm5lY3Qoe1wiWC1BdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgc2VjdXJpdHlUb2tlbn0sIChmcmFtZTogYW55KSA9PiB7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhmcmFtZSk7XHJcbiAgXHJcbiAgICAgICAgdGhpcy5zdG9tcENsaWVudC5zdWJzY3JpYmUoJy9xdWV1ZS8nICsgdG9rZW4sIChtc2c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZygnbWVuc2FnZW0nLCBtc2cpO1xyXG4gIFxyXG4gICAgICAgICAgaWYgKG1zZy5jb21tYW5kID09IFwiTUVTU0FHRVwiKSB7XHJcbiAgXHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2cobXNnKVxyXG5cclxuICAgICAgICAgICAgaWYgKCFjaGF0Q2FsbGJhY2suaXNUb2tlbkZpcmViYXNlQWN0aXZlKCkpIHtcclxuICBcclxuICAgICAgICAgICAgICBsZXQgbXNnT2JqID0gSlNPTi5wYXJzZShtc2cuYm9keSk7XHJcbiAgICBcclxuICAgICAgICAgICAgICBsZXQgZGF0VG1wID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICAgIFxyXG4gICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBtc2dPYmouZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgZGF0VG1wLnNldChrZXksIG1zZ09iai5kYXRhW2tleV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgIFxyXG4gICAgICAgICAgICAgIG1zZ09iai5kYXRhLmFsbCA9IGRhdFRtcDtcclxuICAgIFxyXG4gICAgICAgICAgICAgIGlmIChtc2dPYmouZGF0YS50eXBlID09IFwibXNnXCIpIHtcclxuICAgICAgICAgICAgICAgIGNoYXRDYWxsYmFjay5vbk1lc3NhZ2UobXNnT2JqKTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKChtc2dPYmouZGF0YS50eXBlID09IFwib25cIiB8fCBtc2dPYmouZGF0YS50eXBlID09IFwib2ZmXCIpKSB7XHJcbiAgICAgICAgICAgICAgICBjaGF0Q2FsbGJhY2sub25PZmZsaW5lKG1zZ09iaik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChtc2dPYmouZGF0YS50eXBlID09IFwicmVhZFwiICkge1xyXG4gICAgICAgICAgICAgICAgY2hhdENhbGxiYWNrLm9uUmVhZChtc2dPYmopO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobXNnT2JqLmRhdGEudHlwZSA9PSBcInN0YXJ0VHlwaW5nXCIgfHwgIG1zZ09iai5kYXRhLnR5cGUgPT0gXCJzdG9wVHlwaW5nXCIpIHtcclxuICAgICAgICAgICAgICAgIGNoYXRDYWxsYmFjay5vblN0YXJ0U3RvcFR5cGluZyhtc2dPYmopO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vY2FsbGJhY2sobXNnLmJvZHkpO1xyXG4gICAgICAgICAgICAvLyBpY2hhdGNhbGxiYWNrLmZvckVhY2goKGlDaGF0KT0+e1xyXG4gICAgICAgICAgICAvLyAgIGlDaGF0Lm9uTWVzc2FnZShKU09OLnBhcnNlKG1zZy5ib2R5KSApO1xyXG4gICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgICAobWVzc2FnZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAvLyBjaGVjayBtZXNzYWdlIGZvciBkaXNjb25uZWN0XHJcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRGlzY29ubmVjdFwiKTtcclxuICBcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3RXZWJzb2NrZXQoY2hhdENhbGxiYWNrLCB0b2tlbik7XHJcbiAgICAgICAgICB9LCA1MDApO1xyXG4gIFxyXG4gICAgICAgIH0pO1xyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgZGlzY29ubmVjdCgpIHtcclxuLy8gICAgICBjb25zb2xlLmxvZyhcImRpc2Nvbm5lY3RcIilcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAodGhpcy5zdG9tcENsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9tcENsaWVudC5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb252ZXJ0Q2hhdDRBcHBNZXNzYWdlUmVjZWl2ZVRvQ2hhdE1lc3NhZ2U0QXBwKG1zZzogQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZSk6IENoYXRNZXNzYWdlNEFwcHtcclxuICAgICAgbGV0IG1lc3NhZ2UgPSBuZXcgQ2hhdE1lc3NhZ2U0QXBwKCk7XHJcbiAgICAgIG1lc3NhZ2UuYm9keSA9IG1zZy5ub3RpZmljYXRpb24uYm9keTtcclxuICAgICAgbWVzc2FnZS5jaGF0SWQgPSBtc2cuZGF0YS5jaGF0SWQ7XHJcbiAgICAgIG1lc3NhZ2UuZnJvbUlkID0gbXNnLmRhdGEuZnJvbUlkO1xyXG4gICAgICBtZXNzYWdlLnRvSWQgPSBtc2cuZGF0YS50b0lkO1xyXG4gICAgICBtZXNzYWdlLmdyb3VwSWQgPSBtc2cuZGF0YS5ncm91cElkO1xyXG4gICAgICBtZXNzYWdlLmRhdGVIb3VySW5jbHVkZWQgPSBtb21lbnQudXRjKG1zZy5kYXRhLmRhdGVIb3VyLCBcIkRELU1NLVlZWVkgaGg6bW06c3NcIikudG9EYXRlKCk7XHJcbiAgICAgIG1lc3NhZ2UuaWQgPSBtc2cuZGF0YS5jaGF0TWVzc2FnZUlkO1xyXG5cclxuICAgICAgaWYgKG1zZy5kYXRhLmZpbGVJZCAmJiBtc2cuZGF0YS5maWxlSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBtZXNzYWdlRmlsZSA9IG5ldyBDaGF0TWVzc2FnZUZpbGU0QXBwKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbWVzc2FnZUZpbGUuaWQgPSBtc2cuZGF0YS5maWxlSWQ7XHJcbiAgICAgICAgbWVzc2FnZUZpbGUubmFtZSA9IG1zZy5kYXRhLmZpbGVOYW1lO1xyXG4gICAgICAgIG1lc3NhZ2VGaWxlLnNpemUgPSBtc2cuZGF0YS5maWxlU2l6ZTtcclxuICAgICAgICBtZXNzYWdlRmlsZS50eXBlID0gbXNnLmRhdGEuZmlsZVR5cGU7XHJcblxyXG4gICAgICAgIG1lc3NhZ2UuY2hhdE1lc3NhZ2VGaWxlID0gbWVzc2FnZUZpbGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG5cclxuICAgIH1cclxuICBcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgZXhwb3J0IGNsYXNzIENoYXQ0QXBwIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBjb25maWdJZDogc3RyaW5nO1xyXG4gICAgZXh0ZXJuYWxJZDogc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIHN0YXR1czogQ2hhdFN0YXR1czRBcHA7XHJcbiAgICB1c2VyczogQXJyYXk8Q2hhdFVzZXI0QXBwPjtcclxuICBcclxuICB9XHJcbiAgZXhwb3J0IGNsYXNzIENoYXRVc2VyNEFwcCB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgY2xpZW50VG9rZW46IHN0cmluZztcclxuICAgIHBpY3R1cmVQYXRoOiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgZXh0ZXJuYWxJZDogc3RyaW5nO1xyXG4gICAgc3RhdHVzOiBDaGF0VXNlclN0YXR1czRBcHA7XHJcbiAgfVxyXG4gIGV4cG9ydCBjbGFzcyBDaGF0TWVzc2FnZTRBcHAge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIGZyb21JZDogc3RyaW5nO1xyXG4gICAgdG9JZDogc3RyaW5nO1xyXG4gICAgY2hhdElkOiBzdHJpbmc7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgYm9keTogc3RyaW5nO1xyXG4gICAgbWV0YTogQXJyYXk8Q2hhdE1lc3NhZ2VNZXRhNEFwcD47XHJcbiAgICBncm91cElkOiBzdHJpbmc7XHJcbiAgICByZWFkOiBCb29sZWFuO1xyXG4gICAgZGF0ZUhvdXJJbmNsdWRlZDogRGF0ZTtcclxuICAgIGNoYXRNZXNzYWdlRmlsZTogQ2hhdE1lc3NhZ2VGaWxlNEFwcDtcclxuICB9XHJcbiAgZXhwb3J0IGNsYXNzIENoYXRNZXNzYWdlRmlsZTRBcHAge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHR5cGU6IHN0cmluZztcclxuICAgIHNpemU6IG51bWJlcjtcclxuICAgIGZ1bGxQYXRoOiBzdHJpbmc7XHJcbiAgfVxyXG4gIGV4cG9ydCBjbGFzcyBDaGF0TWVzc2FnZU1ldGE0QXBwIHtcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgfVxyXG4gIGV4cG9ydCBjbGFzcyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlIHtcclxuICAgIGRhdGE6IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmVEYXRhID0gbmV3IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmVEYXRhKCk7XHJcbiAgICBub3RpZmljYXRpb246IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmVOb3RpZmljYXRpb24gPSBuZXcgQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZU5vdGlmaWNhdGlvbigpO1xyXG4gICAgdG9rZW46IHN0cmluZztcclxuICB9XHJcbiAgZXhwb3J0IGNsYXNzIENoYXQ0QXBwTWVzc2FnZVJlY2VpdmVEYXRhIHtcclxuICAgIHRvSWQ6IHN0cmluZztcclxuICAgIGNoYXRJZDogc3RyaW5nO1xyXG4gICAgZGF0ZUhvdXI6IHN0cmluZztcclxuICAgIGNoYXRNZXNzYWdlSWQ6IHN0cmluZztcclxuICAgIGV4dGVybmFsSWQ6IHN0cmluZztcclxuICAgIHR5cGU6IHN0cmluZztcclxuICAgIGZyb21JZDogc3RyaW5nO1xyXG4gICAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gICAgZmlsZUlkOiBzdHJpbmc7XHJcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xyXG4gICAgZmlsZVNpemU6IG51bWJlcjtcclxuICAgIGZpbGVUeXBlOiBzdHJpbmc7XHJcbiAgICBhbGw6IE1hcDxzdHJpbmcsIHN0cmluZz47XHJcbiAgfVxyXG4gIGV4cG9ydCBjbGFzcyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlTm90aWZpY2F0aW9uIHtcclxuICAgIGJvZHk6IHN0cmluZztcclxuICB9XHJcbiAgXHJcbiAgZXhwb3J0IGNsYXNzIENoYXRVc2VyUmVzcG9uc2U0QXBwIHtcclxuICAgIHRvdGFsTWVzc2FnZXM6IG51bWJlcjtcclxuICAgIGNoYXQ6IENoYXQ0QXBwO1xyXG4gICAgY2hhdE1lc3NhZ2U6IENoYXRNZXNzYWdlNEFwcDtcclxuICAgIGNoYXRzOiBDaGF0VXNlclJlc3BvbnNlNEFwcFtdO1xyXG4gIH1cclxuICBleHBvcnQgY2xhc3MgQ2hhdEZpbHRlclJlcXVlc3Q0QXBwIHtcclxuICAgIHR5cGU6IENoYXRGaWx0ZXJUeXBlO1xyXG4gICAgY2hhdEV4dGVybmFsSWQ6IHN0cmluZztcclxuICAgIGNoYXRVc2VyRXh0ZXJuYWxJZDogc3RyaW5nO1xyXG4gICAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gIH1cclxuICBleHBvcnQgY2xhc3MgQ2hhdDRBcHBDb25maWcge1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIGVuZHBvaW50OiBzdHJpbmcpIHtcclxuICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgY2xhc3MgQ2hhdDRBcHBUcmFuc2xhdGUge1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG4gICAgdHJhbnNsYXRlZFRleHQ6IHN0cmluZztcclxuICAgIG9yaWdpbmFsU291cmNlTGFuZ3VhZ2VDb2RlOiBzdHJpbmc7XHJcbiAgICBzb3VyY2VMYW5ndWFnZUNvZGU6IHN0cmluZztcclxuICAgIHRhcmdldExhbmd1YWdlQ29kZTogc3RyaW5nO1xyXG4gICAgbWVzc2FnZUlkOiBzdHJpbmc7XHJcbiAgfVxyXG5cclxuXHJcbiAgXHJcbiAgZXhwb3J0IGVudW0gQ2hhdFN0YXR1czRBcHAge1xyXG4gICAgQ1JFQVRFRCA9IFwiQ1JFQVRFRFwiLFxyXG4gICAgQ0xPU0VEID0gXCJDTE9TRURcIlxyXG4gIFxyXG4gIH1cclxuICBleHBvcnQgZW51bSBDaGF0VXNlclN0YXR1czRBcHAge1xyXG4gICAgUkVNT1ZFRCA9IFwiUkVNT1ZFRFwiXHJcbiAgXHJcbiAgfVxyXG4gIGV4cG9ydCBlbnVtIENoYXRGaWx0ZXJUeXBlIHtcclxuICAgIENPVU5UX05PVF9SRUFEID0gMSxcclxuICAgIExBU1RfTUVTU0FHRSA9IDJcclxuICB9XHJcbiAgXHJcbiAgZXhwb3J0IGludGVyZmFjZSBJQ2hhdENhbGxiYWNrIHtcclxuICAgIGlzVG9rZW5GaXJlYmFzZUFjdGl2ZSgpOiBCb29sZWFuO1xyXG4gICAgb25NZXNzYWdlKG1zZzogQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZSk6IHZvaWQ7XHJcbiAgICBvbk9mZmxpbmUobXNnOiBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKTogdm9pZDtcclxuICAgIG9uUmVhZChtc2c6IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmUpOiB2b2lkO1xyXG4gICAgb25TdGFydFN0b3BUeXBpbmcobXNnOiBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKTogdm9pZDtcclxuXHJcblxyXG4gIH1cclxuICAiXX0=
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdDRhcHAtY2xpZW50LWFuZ3VsYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQ0YXBwLWNsaWVudC1hbmd1bGFyL3NyYy9saWIvY2hhdDRhcHAtY2xpZW50LWFuZ3VsYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7OztBQU9qQyxNQUFNLE9BQU8sNEJBQTRCO0lBUXJDLFlBQXFCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFOckMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixZQUFPLEdBQUcsRUFBRSxDQUFDO0lBT2IsQ0FBQztJQUNELFFBQVE7SUFDUixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQThCO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFFO0lBQ3ZELENBQUM7SUFFRCxJQUFJLENBQUMsaUJBQXlCLEVBQUUsUUFBYSxFQUFFLFlBQTRCLEVBQUUsa0JBQTJCO1FBRXBHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztZQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsaUJBQWlC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dEM7QUFDRCxNQUFNLE9BQU8sa0NBQWtDO0NBRTlDO0FBRUQsTUFBTSxPQUFPLG9CQUFvQjtDQUtoQztBQUNELE1BQU0sT0FBTyxxQkFBcUI7Q0FLakM7QUFDRCxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUFtQixRQUFnQjtRQUFoQixhQUFRLEdBQVIsUUFBUSxDQUFRO0lBRW5DLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxpQkFBaUI7Q0FPN0I7QUFJRCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHFDQUFtQixDQUFBO0lBQ25CLG1DQUFpQixDQUFBO0FBRW5CLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQUNELE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDNUIseUNBQW1CLENBQUE7QUFFckIsQ0FBQyxFQUhXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFHN0I7QUFDRCxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3hCLHVFQUFrQixDQUFBO0lBQ2xCLG1FQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBTdG9tcCBmcm9tICdzdG9tcGpzJztcclxuaW1wb3J0ICogYXMgU29ja0pTIGZyb20gJ3NvY2tqcy1jbGllbnQnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhdDRhcHBDbGllbnRBbmd1bGFyU2VydmljZSBpbXBsZW1lbnRzIE9uSW5pdCAge1xyXG5cclxuICAgIGNoYXRTZXJ2ZXIgPSBcIlwiO1xyXG4gICAgY2hhdFVybCA9IFwiXCI7XHJcbiAgICBcclxuICAgIHNvY2s6IGFueTtcclxuICAgIHN0b21wQ2xpZW50OiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG4gIFxyXG4gICAgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlnKGNoYXQ0QXBwQ29uZmlnOiBDaGF0NEFwcENvbmZpZykge1xyXG4gICAgICB0aGlzLmNoYXRTZXJ2ZXIgPSBjaGF0NEFwcENvbmZpZy5lbmRwb2ludDtcclxuICAgICAgdGhpcy5jaGF0VXJsID0gY2hhdDRBcHBDb25maWcuZW5kcG9pbnQgKyBcIi9hcGkvdjEvXCIgO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgaW5pdChzZWN1cml0eUNoYXRUb2tlbjogc3RyaW5nLCBjYWxsYmFjazogYW55LCBjaGF0Q2FsbGJhY2s/OiBJQ2hhdENhbGxiYWNrLCBjb25uZWN0aW9uQ2xpZW50SWQ/OiBzdHJpbmcpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNoYXRTZXJ2ZXIgfHwgdGhpcy5jaGF0U2VydmVyLnRyaW0oKS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbmRwb2ludCBpcyBlbXB0eVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFzZWN1cml0eUNoYXRUb2tlbiB8fCBzZWN1cml0eUNoYXRUb2tlbi50cmltKCkubGVuZ3RoID09IDApe1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2VjdXJpdHlDaGF0VG9rZW4gaXMgZW1wdHlcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldFRva2VuQ2hhdDRhcHAoc2VjdXJpdHlDaGF0VG9rZW4pO1xyXG4gIFxyXG4gICAgICAgIGlmIChjaGF0Q2FsbGJhY2sgJiYgY29ubmVjdGlvbkNsaWVudElkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbm5lY3RXZWJzb2NrZXQoY2hhdENhbGxiYWNrLCBjb25uZWN0aW9uQ2xpZW50SWQpO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBjYWxsYmFjayhzZWN1cml0eUNoYXRUb2tlbik7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBnZXRDaGF0VXJsRG93bmxvYWQobWVzc2FnZUZpbGVJZDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL2dldEZpbGU/bWVzc2FnZUZpbGVJZD1cIiArIG1lc3NhZ2VGaWxlSWQgKyBcIiZ0b2tlbj1cIiArIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKTtcclxuICAgIH1cclxuICBcclxuICBcclxuICAgIGdldE1lc3NhZ2VDaGF0KGNoYXRJZDogc3RyaW5nLCBmcm9tSWQ6IHN0cmluZywgdG9JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxDaGF0TWVzc2FnZTRBcHA+PiB7XHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL1wiICsgY2hhdElkICsgXCIvXCIgKyBmcm9tSWQgKyBcIi9cIiArIHRvSWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFycmF5PENoYXRNZXNzYWdlNEFwcD4+KHVybCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICBcclxuICAgIH1cclxuICAgIGdldE1lc3NhZ2VDaGF0QnlHcm9wKGNoYXRJZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcsIGZyb21JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxDaGF0TWVzc2FnZTRBcHA+PiB7XHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL2J5R3JvdXAvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGdyb3VwSWQgKyBcIi9cIiArIGZyb21JZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXJyYXk8Q2hhdE1lc3NhZ2U0QXBwPj4odXJsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgYWRkTWVzc2FnZUNoYXQoY2hhdE1lc3NhZ2U0QXBwOiBDaGF0TWVzc2FnZTRBcHApOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlNEFwcD4ge1xyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9cIiArIGNoYXRNZXNzYWdlNEFwcC5jaGF0SWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDaGF0TWVzc2FnZTRBcHA+KHVybCwgY2hhdE1lc3NhZ2U0QXBwLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gIFxyXG4gICAgfVxyXG4gICAgcHJvcHMoY2hhdEZpbHRlclJlcXVlc3Q0QXBwOiBBcnJheTxDaGF0RmlsdGVyUmVxdWVzdDRBcHA+KTogT2JzZXJ2YWJsZTxDaGF0VXNlclJlc3BvbnNlNEFwcFtdPiB7XHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3Byb3BzXCI7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDaGF0VXNlclJlc3BvbnNlNEFwcFtdPih1cmwsIGNoYXRGaWx0ZXJSZXF1ZXN0NEFwcCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICBcclxuICAgIH1cclxuICBcclxuICBcclxuICAgIHJlbW92ZVVzZXJzQ2hhdChjaGF0SWQ6IHN0cmluZywgY2hhdFVzZXJzSWQ/OiBzdHJpbmdbXSwgY2hhdFVzZXJzRXh0ZXJuYWxJZD86IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxDaGF0VXNlcjRBcHBbXT4ge1xyXG4gICAgICBsZXQgcGFyYW1zID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIGlmIChjaGF0VXNlcnNJZCAmJiBjaGF0VXNlcnNJZC5sZW5ndGggPiAwKSB7XHJcbiAgXHJcbiAgICAgICAgY2hhdFVzZXJzSWQuZm9yRWFjaChjdWkgPT4ge1xyXG4gICAgICAgICAgcGFyYW1zLnB1c2goXCJjaGF0VXNlcklkPVwiICsgY3VpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmIChjaGF0VXNlcnNFeHRlcm5hbElkICYmIGNoYXRVc2Vyc0V4dGVybmFsSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNoYXRVc2Vyc0V4dGVybmFsSWQuZm9yRWFjaChjdWVpID0+IHtcclxuICAgICAgICAgIHBhcmFtcy5wdXNoKFwiY2hhdFVzZXJFeHRlcm5hbElkPVwiICsgY3VlaSk7XHJcbiAgICAgICAgfSlcclxuICBcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0dXNlci9cIiArIGNoYXRJZCArIFwiP1wiICsgcGFyYW1zLmpvaW4oXCImXCIpO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxDaGF0VXNlcjRBcHBbXT4odXJsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIFxyXG4gICAgcmVtb3ZlVXNlckNoYXQoY2hhdElkOiBzdHJpbmcsIGNoYXRVc2VySWQ/OiBzdHJpbmcsIGNoYXRVc2VyRXh0ZXJuYWxJZD86IHN0cmluZyk6IE9ic2VydmFibGU8Q2hhdFVzZXI0QXBwPiB7XHJcbiAgICAgIGxldCBwYXJhbSA9IFwiXCI7XHJcbiAgICAgIGlmIChjaGF0VXNlcklkKSB7XHJcbiAgICAgICAgcGFyYW0gPSBcImNoYXRVc2VySWQ9XCIgKyBjaGF0VXNlcklkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtID0gXCJjaGF0VXNlckV4dGVybmFsSWQ9XCIgKyBjaGF0VXNlckV4dGVybmFsSWQ7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdHVzZXIvXCIgKyBjaGF0SWQgKyBcIj9cIiArIHBhcmFtO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxDaGF0VXNlcjRBcHA+KHVybCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICBcclxuICAgIHVwZGF0ZVVzZXJDaGF0KGNoYXRJZDogc3RyaW5nLCBjaGFyVXNlcjRBcHBVcGRhdGU6IENoYXRVc2VyNEFwcCk6IE9ic2VydmFibGU8Q2hhdFVzZXI0QXBwPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXR1c2VyL1wiICsgY2hhdElkO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxDaGF0VXNlcjRBcHA+KHVybCwgY2hhclVzZXI0QXBwVXBkYXRlLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgY3JlYXRlVXNlckNoYXQoY2hhdElkOiBzdHJpbmcsIGNoYXRVc2VyNEFwcDogQ2hhdFVzZXI0QXBwKTogT2JzZXJ2YWJsZTxDaGF0VXNlcjRBcHA+IHtcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdHVzZXIvXCIgKyBjaGF0SWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDaGF0VXNlcjRBcHA+KHVybCwgY2hhdFVzZXI0QXBwLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIFxyXG4gICAgY3JlYXRlVXNlcnNDaGF0KGNoYXRJZDogc3RyaW5nLCBjaGF0VXNlcjRBcHA6IENoYXRVc2VyNEFwcFtdKTogT2JzZXJ2YWJsZTxDaGF0VXNlcjRBcHBbXT4ge1xyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0dXNlci91c2Vycy9cIiArIGNoYXRJZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENoYXRVc2VyNEFwcFtdPih1cmwsIGNoYXRVc2VyNEFwcCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICBcclxuICBcclxuICAgIGNyZWF0ZUNoYXQoY2hhdDRhcHA6IENoYXQ0QXBwKTogT2JzZXJ2YWJsZTxDaGF0NEFwcD4ge1xyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0XCI7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDaGF0NEFwcD4odXJsLCBjaGF0NGFwcCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIGNyZWF0ZVVwZGF0ZUNoYXQoY2hhdDRhcHA6IENoYXQ0QXBwKTogT2JzZXJ2YWJsZTxDaGF0NEFwcD4ge1xyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0XCI7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PENoYXQ0QXBwPih1cmwsIGNoYXQ0YXBwLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgZ2V0TGFzdE1lc3NhZ2VHcm91cChjaGF0RXh0ZXJuYWxJZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENoYXRVc2VyUmVzcG9uc2U0QXBwPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL2xhc3RNZXNzYWdlR3JvdXA/Y2hhdEV4dGVybmFsSWQ9XCIgKyBjaGF0RXh0ZXJuYWxJZCArIFwiJmdyb3VwSWQ9XCIgKyBncm91cElkO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDaGF0VXNlclJlc3BvbnNlNEFwcD4odXJsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgZ2V0TGFzdE1lc3NhZ2UoY2hhdEV4dGVybmFsSWQ6IHN0cmluZywgY2hhdFVzZXJFeHRlcm5hbElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENoYXRVc2VyUmVzcG9uc2U0QXBwPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL2xhc3RNZXNzYWdlP2NoYXRFeHRlcm5hbElkPVwiICsgY2hhdEV4dGVybmFsSWQgKyBcIiZjaGF0VXNlckV4dGVybmFsSWQ9XCIgKyBjaGF0VXNlckV4dGVybmFsSWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENoYXRVc2VyUmVzcG9uc2U0QXBwPih1cmwsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjb3VudE5vdFJlYWRNZXNzYWdlcyhjaGF0VXNlckV4dGVybmFsSWQ6IHN0cmluZywgY2hhdEV4dGVybmFsSWQ/OiBzdHJpbmcsIGdyb3VwSWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPENoYXRVc2VyUmVzcG9uc2U0QXBwPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL2NvdW50Tm90UmVhZE1lc3NhZ2VzP2NoYXRVc2VyRXh0ZXJuYWxJZD1cIiArIGNoYXRVc2VyRXh0ZXJuYWxJZDtcclxuICBcclxuICAgICAgaWYgKGNoYXRFeHRlcm5hbElkICYmIGNoYXRFeHRlcm5hbElkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB1cmwgKz0gXCImY2hhdEV4dGVybmFsSWQ9XCIgKyBjaGF0RXh0ZXJuYWxJZDtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBpZiAoZ3JvdXBJZCAmJiBncm91cElkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB1cmwgKz0gXCImZ3JvdXBJZD1cIiArIGdyb3VwSWQ7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Q2hhdFVzZXJSZXNwb25zZTRBcHA+KHVybCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICBcclxuICBcclxuICAgIGdldENoYXRCeUV4dGVybmFsSWQoZXh0ZXJuYWxJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDaGF0NEFwcD4ge1xyXG4gIFxyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0P2V4dGVybmFsSWQ9XCIgKyBleHRlcm5hbElkO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDaGF0NEFwcD4odXJsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgcmVhZE1lc3NhZ2UoY2hhdE1lc3NhZ2VJZDogc3RyaW5nLCB0b0lkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3JlYWQvXCIgKyBjaGF0TWVzc2FnZUlkO1xyXG4gIFxyXG4gICAgICBpZiAodG9JZCAmJiB0b0lkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB1cmwgKz0gXCIvXCIgKyB0b0lkO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PHZvaWQ+KHVybCwgbnVsbCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIG9ubGluZShjaGF0SWQ6IHN0cmluZywgY2hhdFVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICBcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2Uvb25saW5lL1wiICsgY2hhdElkICsgXCIvXCIgKyBjaGF0VXNlcklkO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxudW1iZXI+KHVybCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICBcclxuICBcclxuICAgIHNlbmRGaWxlKGNoYXRJZDogc3RyaW5nLCBmcm9tSWQ6IHN0cmluZywgdG9JZDogc3RyaW5nLCBmaWxlVG9VcGxvYWQ6IEZpbGUpOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlRmlsZTRBcHA+IHtcclxuICAgICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3NlbmRGaWxlL1wiICsgY2hhdElkICsgXCIvXCIgKyBmcm9tSWQgKyBcIi9cIiArIHRvSWQ7XHJcbiAgXHJcbiAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlVG9VcGxvYWQpO1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgLnBvc3Q8Q2hhdE1lc3NhZ2VGaWxlNEFwcD4oZW5kcG9pbnQsIGZvcm1EYXRhLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgICB9KTtcclxuICAgIH1cclxuICBcclxuICAgIHNlbmRGaWxlR3JvdXAoY2hhdElkOiBzdHJpbmcsIGZyb21JZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcsIGZpbGVUb1VwbG9hZDogRmlsZSk6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2VGaWxlNEFwcD4ge1xyXG4gICAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2Uvc2VuZEZpbGVHcm91cC9cIiArIGNoYXRJZCArIFwiL1wiICsgZnJvbUlkICsgXCIvXCIgKyBncm91cElkO1xyXG4gIFxyXG4gICAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZVRvVXBsb2FkKTtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wb3N0PENoYXRNZXNzYWdlRmlsZTRBcHA+KGVuZHBvaW50LCBmb3JtRGF0YSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNsYXRlTWVzc2FnZShjaGF0TWVzc2FnZUlkOiBzdHJpbmcsIGxhbmd1YWdlVGFyZ2V0OiBzdHJpbmcpOiBPYnNlcnZhYmxlPENoYXQ0QXBwVHJhbnNsYXRlPiB7XHJcbiAgXHJcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3RyYW5zbGF0ZS9cIiArIGNoYXRNZXNzYWdlSWQgKyBcIi9cIiArIGxhbmd1YWdlVGFyZ2V0O1xyXG4gIFxyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDaGF0NEFwcFRyYW5zbGF0ZT4odXJsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VHlwaW5nKGNoYXRJZDogc3RyaW5nLGZyb21JZDogc3RyaW5nLCB0b0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICBcclxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2Uvc3RhcnRUeXBpbmcvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgdG9JZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8dm9pZD4odXJsLCBudWxsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VHlwaW5nR3JvdXAoY2hhdElkOiBzdHJpbmcsZnJvbUlkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gIFxyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9zdGFydFR5cGluZ0dyb3VwL1wiICsgY2hhdElkICsgXCIvXCIgKyBmcm9tSWQgKyBcIi9cIiArIGdyb3VwSWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PHZvaWQ+KHVybCwgbnVsbCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIHN0b3BUeXBpbmcoY2hhdElkOiBzdHJpbmcsZnJvbUlkOiBzdHJpbmcsIHRvSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gIFxyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9zdG9wVHlwaW5nL1wiICsgY2hhdElkICsgXCIvXCIgKyBmcm9tSWQgKyBcIi9cIiArIHRvSWQ7XHJcbiAgXHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PHZvaWQ+KHVybCwgbnVsbCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzdG9wVHlwaW5nR3JvdXAoY2hhdElkOiBzdHJpbmcsZnJvbUlkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gIFxyXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9zdG9wVHlwaW5nR3JvdXAvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgZ3JvdXBJZDtcclxuICBcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8dm9pZD4odXJsLCBudWxsLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICBcclxuICAgIC8qIFRva2VuICovXHJcbiAgICBnZXRCZWFyZXJUb2tlbigpOiBzdHJpbmcge1xyXG4gIFxyXG4gICAgICBsZXQgcmV0ID0gXCJCZWFyZXIgXCIgKyB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImNoYXQ0QXBwU2Vzc2lvblRva2VuXCIpO1xyXG4gIFxyXG4gICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgc2V0VG9rZW5DaGF0NGFwcChjaGF0NEFwcFNlc3Npb25Ub2tlbjogc3RyaW5nKSB7XHJcbiAgXHJcbiAgXHJcbiAgICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwiY2hhdDRBcHBTZXNzaW9uVG9rZW5cIiwgY2hhdDRBcHBTZXNzaW9uVG9rZW4pO1xyXG4gICAgfVxyXG4gIFxyXG4gIFxyXG4gICAgLyogQ29ubmVjdGlvbiAqL1xyXG4gIFxyXG4gICAgb25NZXNzYWdlRmlyZWJhc2VSZWNlaXZlZChkYXRhOiBhbnksIGNoYXRDYWxsYmFjazogSUNoYXRDYWxsYmFjaykge1xyXG4gIFxyXG4gIFxyXG4gICAgICAvL2FsZXJ0KFwib25NZXNzYWdlUmVjZWl2ZWQgY29ubmVjdEZpcmViYXNlXCIpO1xyXG4gIFxyXG4gICAgICBpZiAoZGF0YS50eXBlID09IFwibXNnXCIpIHtcclxuICBcclxuICAgICAgICBsZXQgY2hhdDRhcHBNZXNzYWdlID0gbmV3IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmUoKTtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0SWQgPSBkYXRhLmNoYXRJZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0TWVzc2FnZUlkID0gZGF0YS5jaGF0TWVzc2FnZUlkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmV4dGVybmFsSWQgPSBkYXRhLmV4dGVybmFsSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZnJvbUlkID0gZGF0YS5mcm9tSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEudG9JZCA9IGRhdGEudG9JZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5ncm91cElkID0gZGF0YS5ncm91cElkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmRhdGVIb3VyID0gZGF0YS5kYXRlSG91cjtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50eXBlID0gZGF0YS50eXBlO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5ub3RpZmljYXRpb24uYm9keSA9IGRhdGEuYm9keTtcclxuICBcclxuICAgICAgICBpZiAoZGF0YS5maWxlSWQgJiYgZGF0YS5maWxlSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZmlsZUlkID0gZGF0YS5maWxlSWQ7XHJcbiAgICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5maWxlTmFtZSA9IGRhdGEuZmlsZU5hbWU7XHJcbiAgICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5maWxlU2l6ZSA9IGRhdGEuZmlsZVNpemU7XHJcbiAgICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5maWxlVHlwZSA9IGRhdGEuZmlsZVR5cGU7XHJcbiAgXHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGxldCBkYXRUbXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG4gIFxyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICBkYXRUbXAuc2V0KGtleSwgZGF0YVtrZXldKTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuYWxsID0gZGF0VG1wO1xyXG4gIFxyXG4gICAgICAgIGNoYXRDYWxsYmFjay5vbk1lc3NhZ2UoY2hhdDRhcHBNZXNzYWdlKTtcclxuICBcclxuICAgICAgfSBlbHNlIGlmICgoZGF0YS50eXBlID09IFwib25cIiB8fCBkYXRhLnR5cGUgPT0gXCJvZmZcIikpIHtcclxuICAgICAgICBsZXQgY2hhdDRhcHBNZXNzYWdlID0gbmV3IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmUoKTtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0SWQgPSBkYXRhLmNoYXRJZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0TWVzc2FnZUlkID0gZGF0YS5jaGF0TWVzc2FnZUlkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmV4dGVybmFsSWQgPSBkYXRhLmV4dGVybmFsSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZnJvbUlkID0gZGF0YS5mcm9tSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEudG9JZCA9IGRhdGEudG9JZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5ncm91cElkID0gZGF0YS5ncm91cElkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmRhdGVIb3VyID0gZGF0YS5kYXRlSG91cjtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50eXBlID0gZGF0YS50eXBlO1xyXG5cclxuICAgICAgICBsZXQgZGF0VG1wID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICBcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgZGF0VG1wLnNldChrZXksIGRhdGFba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmFsbCA9IGRhdFRtcDtcclxuICBcclxuICAgICAgICBjaGF0Q2FsbGJhY2sub25PZmZsaW5lKGNoYXQ0YXBwTWVzc2FnZSk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcInJlYWRcIiApIHtcclxuICAgICAgICBsZXQgY2hhdDRhcHBNZXNzYWdlID0gbmV3IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmUoKTtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0SWQgPSBkYXRhLmNoYXRJZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0TWVzc2FnZUlkID0gZGF0YS5jaGF0TWVzc2FnZUlkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmV4dGVybmFsSWQgPSBkYXRhLmV4dGVybmFsSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZnJvbUlkID0gZGF0YS5mcm9tSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEudG9JZCA9IGRhdGEudG9JZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5ncm91cElkID0gZGF0YS5ncm91cElkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmRhdGVIb3VyID0gZGF0YS5kYXRlSG91cjtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50eXBlID0gZGF0YS50eXBlO1xyXG5cclxuICAgICAgICBsZXQgZGF0VG1wID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICBcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgZGF0VG1wLnNldChrZXksIGRhdGFba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmFsbCA9IGRhdFRtcDtcclxuICBcclxuICAgICAgICBjaGF0Q2FsbGJhY2sub25SZWFkKGNoYXQ0YXBwTWVzc2FnZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09IFwic3RhcnRUeXBpbmdcIiB8fCBkYXRhLnR5cGUgPT0gXCJzdG9wVHlwaW5nXCIgKSB7XHJcbiAgICAgICAgbGV0IGNoYXQ0YXBwTWVzc2FnZSA9IG5ldyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKCk7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuY2hhdElkID0gZGF0YS5jaGF0SWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuY2hhdE1lc3NhZ2VJZCA9IGRhdGEuY2hhdE1lc3NhZ2VJZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5leHRlcm5hbElkID0gZGF0YS5leHRlcm5hbElkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmZyb21JZCA9IGRhdGEuZnJvbUlkO1xyXG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLnRvSWQgPSBkYXRhLnRvSWQ7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZ3JvdXBJZCA9IGRhdGEuZ3JvdXBJZDtcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5kYXRlSG91ciA9IGRhdGEuZGF0ZUhvdXI7XHJcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEudHlwZSA9IGRhdGEudHlwZTtcclxuXHJcbiAgICAgICAgbGV0IGRhdFRtcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgXHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgIGRhdFRtcC5zZXQoa2V5LCBkYXRhW2tleV0pO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5hbGwgPSBkYXRUbXA7XHJcbiAgXHJcbiAgICAgICAgY2hhdENhbGxiYWNrLm9uU3RhcnRTdG9wVHlwaW5nKGNoYXQ0YXBwTWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICBcclxuICAgIH1cclxuICBcclxuICAgIGNvbm5lY3RXZWJzb2NrZXQoY2hhdENhbGxiYWNrOiBJQ2hhdENhbGxiYWNrLCB0b2tlbjogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xyXG4gIFxyXG4gICAgICBsZXQgc2VjdXJpdHlUb2tlbiA9IHRoaXMuZ2V0QmVhcmVyVG9rZW4oKTtcclxuICBcclxuICAgICAgdGhpcy5zb2NrID0gbmV3IFNvY2tKUyh0aGlzLmNoYXRTZXJ2ZXIgKyAnL3N0b21wL2drei1zdG9tcC1lbmRwb2ludD90b2tlbj0nICsgc2VjdXJpdHlUb2tlbik7XHJcbiAgICAgIHRoaXMuc3RvbXBDbGllbnQgPSBTdG9tcC5vdmVyKHRoaXMuc29jayk7XHJcbiAgICAgIHRoaXMuc3RvbXBDbGllbnQuZGVidWcgPSBmdW5jdGlvbiAobXNnOiBhbnkpIHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKG1zZyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCB0b2tlbkF1dGggPSBcIlwiO1xyXG5cclxuICAgICAgaWYgKHNlY3VyaXR5VG9rZW4gJiYgc2VjdXJpdHlUb2tlbi5zdGFydHNXaXRoKFwiQmVhcmVyIFwiKSl7XHJcbiAgICAgICAgdG9rZW5BdXRoID0gc2VjdXJpdHlUb2tlbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0b2tlbkF1dGggPSBcIkJlYXJlciBcIiArIHNlY3VyaXR5VG9rZW47XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgdGhpcy5zdG9tcENsaWVudC5jb25uZWN0KHtcIlgtQXV0aG9yaXphdGlvblwiOiB0b2tlbkF1dGh9LCAoZnJhbWU6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coZnJhbWUpO1xyXG4gIFxyXG4gICAgICAgIHRoaXMuc3RvbXBDbGllbnQuc3Vic2NyaWJlKCcvcXVldWUvJyArIHRva2VuLCAobXNnOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coJ21lbnNhZ2VtJywgbXNnKTtcclxuICBcclxuICAgICAgICAgIGlmIChtc2cuY29tbWFuZCA9PSBcIk1FU1NBR0VcIikge1xyXG4gIFxyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKG1zZylcclxuXHJcbiAgICAgICAgICAgIGlmICghY2hhdENhbGxiYWNrLmlzVG9rZW5GaXJlYmFzZUFjdGl2ZSgpKSB7XHJcbiAgXHJcbiAgICAgICAgICAgICAgbGV0IG1zZ09iaiA9IEpTT04ucGFyc2UobXNnLmJvZHkpO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgbGV0IGRhdFRtcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgICBcclxuICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gbXNnT2JqLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGRhdFRtcC5zZXQoa2V5LCBtc2dPYmouZGF0YVtrZXldKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgICBtc2dPYmouZGF0YS5hbGwgPSBkYXRUbXA7XHJcbiAgICBcclxuICAgICAgICAgICAgICBpZiAobXNnT2JqLmRhdGEudHlwZSA9PSBcIm1zZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICBjaGF0Q2FsbGJhY2sub25NZXNzYWdlKG1zZ09iaik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICgobXNnT2JqLmRhdGEudHlwZSA9PSBcIm9uXCIgfHwgbXNnT2JqLmRhdGEudHlwZSA9PSBcIm9mZlwiKSkge1xyXG4gICAgICAgICAgICAgICAgY2hhdENhbGxiYWNrLm9uT2ZmbGluZShtc2dPYmopO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobXNnT2JqLmRhdGEudHlwZSA9PSBcInJlYWRcIiApIHtcclxuICAgICAgICAgICAgICAgIGNoYXRDYWxsYmFjay5vblJlYWQobXNnT2JqKTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1zZ09iai5kYXRhLnR5cGUgPT0gXCJzdGFydFR5cGluZ1wiIHx8ICBtc2dPYmouZGF0YS50eXBlID09IFwic3RvcFR5cGluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICBjaGF0Q2FsbGJhY2sub25TdGFydFN0b3BUeXBpbmcobXNnT2JqKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvL2NhbGxiYWNrKG1zZy5ib2R5KTtcclxuICAgICAgICAgICAgLy8gaWNoYXRjYWxsYmFjay5mb3JFYWNoKChpQ2hhdCk9PntcclxuICAgICAgICAgICAgLy8gICBpQ2hhdC5vbk1lc3NhZ2UoSlNPTi5wYXJzZShtc2cuYm9keSkgKTtcclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgICAgKG1lc3NhZ2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gY2hlY2sgbWVzc2FnZSBmb3IgZGlzY29ubmVjdFxyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkRpc2Nvbm5lY3RcIik7XHJcbiAgXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0V2Vic29ja2V0KGNoYXRDYWxsYmFjaywgdG9rZW4pO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICBcclxuICAgICAgICB9KTtcclxuICBcclxuICAgIH1cclxuICBcclxuICAgIGRpc2Nvbm5lY3QoKSB7XHJcbi8vICAgICAgY29uc29sZS5sb2coXCJkaXNjb25uZWN0XCIpXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RvbXBDbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuc3RvbXBDbGllbnQuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29udmVydENoYXQ0QXBwTWVzc2FnZVJlY2VpdmVUb0NoYXRNZXNzYWdlNEFwcChtc2c6IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmUpOiBDaGF0TWVzc2FnZTRBcHB7XHJcbiAgICAgIGxldCBtZXNzYWdlID0gbmV3IENoYXRNZXNzYWdlNEFwcCgpO1xyXG4gICAgICBtZXNzYWdlLmJvZHkgPSBtc2cubm90aWZpY2F0aW9uLmJvZHk7XHJcbiAgICAgIG1lc3NhZ2UuY2hhdElkID0gbXNnLmRhdGEuY2hhdElkO1xyXG4gICAgICBtZXNzYWdlLmZyb21JZCA9IG1zZy5kYXRhLmZyb21JZDtcclxuICAgICAgbWVzc2FnZS50b0lkID0gbXNnLmRhdGEudG9JZDtcclxuICAgICAgbWVzc2FnZS5ncm91cElkID0gbXNnLmRhdGEuZ3JvdXBJZDtcclxuICAgICAgbWVzc2FnZS5kYXRlSG91ckluY2x1ZGVkID0gbW9tZW50LnV0Yyhtc2cuZGF0YS5kYXRlSG91ciwgXCJERC1NTS1ZWVlZIGhoOm1tOnNzXCIpLnRvRGF0ZSgpO1xyXG4gICAgICBtZXNzYWdlLmlkID0gbXNnLmRhdGEuY2hhdE1lc3NhZ2VJZDtcclxuXHJcbiAgICAgIGlmIChtc2cuZGF0YS5maWxlSWQgJiYgbXNnLmRhdGEuZmlsZUlkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgbWVzc2FnZUZpbGUgPSBuZXcgQ2hhdE1lc3NhZ2VGaWxlNEFwcCgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIG1lc3NhZ2VGaWxlLmlkID0gbXNnLmRhdGEuZmlsZUlkO1xyXG4gICAgICAgIG1lc3NhZ2VGaWxlLm5hbWUgPSBtc2cuZGF0YS5maWxlTmFtZTtcclxuICAgICAgICBtZXNzYWdlRmlsZS5zaXplID0gbXNnLmRhdGEuZmlsZVNpemU7XHJcbiAgICAgICAgbWVzc2FnZUZpbGUudHlwZSA9IG1zZy5kYXRhLmZpbGVUeXBlO1xyXG5cclxuICAgICAgICBtZXNzYWdlLmNoYXRNZXNzYWdlRmlsZSA9IG1lc3NhZ2VGaWxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuXHJcbiAgICB9XHJcbiAgXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIGV4cG9ydCBjbGFzcyBDaGF0NEFwcCB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgY29uZmlnSWQ6IHN0cmluZztcclxuICAgIGV4dGVybmFsSWQ6IHN0cmluZztcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBzdGF0dXM6IENoYXRTdGF0dXM0QXBwO1xyXG4gICAgdXNlcnM6IEFycmF5PENoYXRVc2VyNEFwcD47XHJcbiAgXHJcbiAgfVxyXG4gIGV4cG9ydCBjbGFzcyBDaGF0VXNlcjRBcHAge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGNsaWVudFRva2VuOiBzdHJpbmc7XHJcbiAgICBwaWN0dXJlUGF0aDogc3RyaW5nO1xyXG4gICAgZW1haWw6IHN0cmluZztcclxuICAgIGV4dGVybmFsSWQ6IHN0cmluZztcclxuICAgIHN0YXR1czogQ2hhdFVzZXJTdGF0dXM0QXBwO1xyXG4gIH1cclxuICBleHBvcnQgY2xhc3MgQ2hhdE1lc3NhZ2U0QXBwIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBmcm9tSWQ6IHN0cmluZztcclxuICAgIHRvSWQ6IHN0cmluZztcclxuICAgIGNoYXRJZDogc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIGJvZHk6IHN0cmluZztcclxuICAgIG1ldGE6IEFycmF5PENoYXRNZXNzYWdlTWV0YTRBcHA+O1xyXG4gICAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gICAgcmVhZDogQm9vbGVhbjtcclxuICAgIGRhdGVIb3VySW5jbHVkZWQ6IERhdGU7XHJcbiAgICBjaGF0TWVzc2FnZUZpbGU6IENoYXRNZXNzYWdlRmlsZTRBcHA7XHJcbiAgfVxyXG4gIGV4cG9ydCBjbGFzcyBDaGF0TWVzc2FnZUZpbGU0QXBwIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbiAgICBzaXplOiBudW1iZXI7XHJcbiAgICBmdWxsUGF0aDogc3RyaW5nO1xyXG4gIH1cclxuICBleHBvcnQgY2xhc3MgQ2hhdE1lc3NhZ2VNZXRhNEFwcCB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICB2YWx1ZTogc3RyaW5nO1xyXG4gIH1cclxuICBleHBvcnQgY2xhc3MgQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZSB7XHJcbiAgICBkYXRhOiBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlRGF0YSA9IG5ldyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlRGF0YSgpO1xyXG4gICAgbm90aWZpY2F0aW9uOiBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlTm90aWZpY2F0aW9uID0gbmV3IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmVOb3RpZmljYXRpb24oKTtcclxuICAgIHRva2VuOiBzdHJpbmc7XHJcbiAgfVxyXG4gIGV4cG9ydCBjbGFzcyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlRGF0YSB7XHJcbiAgICB0b0lkOiBzdHJpbmc7XHJcbiAgICBjaGF0SWQ6IHN0cmluZztcclxuICAgIGRhdGVIb3VyOiBzdHJpbmc7XHJcbiAgICBjaGF0TWVzc2FnZUlkOiBzdHJpbmc7XHJcbiAgICBleHRlcm5hbElkOiBzdHJpbmc7XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbiAgICBmcm9tSWQ6IHN0cmluZztcclxuICAgIGdyb3VwSWQ6IHN0cmluZztcclxuICAgIGZpbGVJZDogc3RyaW5nO1xyXG4gICAgZmlsZU5hbWU6IHN0cmluZztcclxuICAgIGZpbGVTaXplOiBudW1iZXI7XHJcbiAgICBmaWxlVHlwZTogc3RyaW5nO1xyXG4gICAgYWxsOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIH1cclxuICBleHBvcnQgY2xhc3MgQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZU5vdGlmaWNhdGlvbiB7XHJcbiAgICBib2R5OiBzdHJpbmc7XHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9ydCBjbGFzcyBDaGF0VXNlclJlc3BvbnNlNEFwcCB7XHJcbiAgICB0b3RhbE1lc3NhZ2VzOiBudW1iZXI7XHJcbiAgICBjaGF0OiBDaGF0NEFwcDtcclxuICAgIGNoYXRNZXNzYWdlOiBDaGF0TWVzc2FnZTRBcHA7XHJcbiAgICBjaGF0czogQ2hhdFVzZXJSZXNwb25zZTRBcHBbXTtcclxuICB9XHJcbiAgZXhwb3J0IGNsYXNzIENoYXRGaWx0ZXJSZXF1ZXN0NEFwcCB7XHJcbiAgICB0eXBlOiBDaGF0RmlsdGVyVHlwZTtcclxuICAgIGNoYXRFeHRlcm5hbElkOiBzdHJpbmc7XHJcbiAgICBjaGF0VXNlckV4dGVybmFsSWQ6IHN0cmluZztcclxuICAgIGdyb3VwSWQ6IHN0cmluZztcclxuICB9XHJcbiAgZXhwb3J0IGNsYXNzIENoYXQ0QXBwQ29uZmlnIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbmRwb2ludDogc3RyaW5nKSB7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGNsYXNzIENoYXQ0QXBwVHJhbnNsYXRlIHtcclxuICAgIHRleHQ6IHN0cmluZztcclxuICAgIHRyYW5zbGF0ZWRUZXh0OiBzdHJpbmc7XHJcbiAgICBvcmlnaW5hbFNvdXJjZUxhbmd1YWdlQ29kZTogc3RyaW5nO1xyXG4gICAgc291cmNlTGFuZ3VhZ2VDb2RlOiBzdHJpbmc7XHJcbiAgICB0YXJnZXRMYW5ndWFnZUNvZGU6IHN0cmluZztcclxuICAgIG1lc3NhZ2VJZDogc3RyaW5nO1xyXG4gIH1cclxuXHJcblxyXG4gIFxyXG4gIGV4cG9ydCBlbnVtIENoYXRTdGF0dXM0QXBwIHtcclxuICAgIENSRUFURUQgPSBcIkNSRUFURURcIixcclxuICAgIENMT1NFRCA9IFwiQ0xPU0VEXCJcclxuICBcclxuICB9XHJcbiAgZXhwb3J0IGVudW0gQ2hhdFVzZXJTdGF0dXM0QXBwIHtcclxuICAgIFJFTU9WRUQgPSBcIlJFTU9WRURcIlxyXG4gIFxyXG4gIH1cclxuICBleHBvcnQgZW51bSBDaGF0RmlsdGVyVHlwZSB7XHJcbiAgICBDT1VOVF9OT1RfUkVBRCA9IDEsXHJcbiAgICBMQVNUX01FU1NBR0UgPSAyXHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUNoYXRDYWxsYmFjayB7XHJcbiAgICBpc1Rva2VuRmlyZWJhc2VBY3RpdmUoKTogQm9vbGVhbjtcclxuICAgIG9uTWVzc2FnZShtc2c6IENoYXQ0QXBwTWVzc2FnZVJlY2VpdmUpOiB2b2lkO1xyXG4gICAgb25PZmZsaW5lKG1zZzogQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZSk6IHZvaWQ7XHJcbiAgICBvblJlYWQobXNnOiBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKTogdm9pZDtcclxuICAgIG9uU3RhcnRTdG9wVHlwaW5nKG1zZzogQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZSk6IHZvaWQ7XHJcblxyXG5cclxuICB9XHJcbiAgIl19
|
|
@@ -306,7 +306,14 @@ class Chat4appClientAngularService {
|
|
|
306
306
|
this.stompClient.debug = function (msg) {
|
|
307
307
|
//console.log(msg);
|
|
308
308
|
};
|
|
309
|
-
|
|
309
|
+
let tokenAuth = "";
|
|
310
|
+
if (securityToken && securityToken.startsWith("Bearer ")) {
|
|
311
|
+
tokenAuth = securityToken;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
tokenAuth = "Bearer " + securityToken;
|
|
315
|
+
}
|
|
316
|
+
this.stompClient.connect({ "X-Authorization": tokenAuth }, (frame) => {
|
|
310
317
|
//console.log(frame);
|
|
311
318
|
this.stompClient.subscribe('/queue/' + token, (msg) => {
|
|
312
319
|
//console.log('mensagem', msg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat4app-client-angular.js","sources":["../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.service.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.component.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.module.ts","../../../projects/chat4app-client-angular/src/public-api.ts","../../../projects/chat4app-client-angular/src/chat4app-client-angular.ts"],"sourcesContent":["import { Injectable, OnInit } from '@angular/core';\r\nimport * as Stomp from 'stompjs';\r\nimport * as SockJS from 'sockjs-client';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport * as moment from 'moment';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Chat4appClientAngularService implements OnInit {\r\n\r\n chatServer = \"\";\r\n chatUrl = \"\";\r\n \r\n sock: any;\r\n stompClient: any;\r\n\r\n constructor( private http: HttpClient) {\r\n \r\n }\r\n ngOnInit(): void {\r\n }\r\n\r\n config(chat4AppConfig: Chat4AppConfig) {\r\n this.chatServer = chat4AppConfig.endpoint;\r\n this.chatUrl = chat4AppConfig.endpoint + \"/api/v1/\" ;\r\n }\r\n \r\n init(securityChatToken: string, callback: any, chatCallback?: IChatCallback, connectionClientId?: string) {\r\n\r\n if (!this.chatServer || this.chatServer.trim().length == 0){\r\n throw new Error(\"Endpoint is empty\");\r\n }\r\n if (!securityChatToken || securityChatToken.trim().length == 0){\r\n throw new Error(\"SecurityChatToken is empty\");\r\n }\r\n\r\n this.setTokenChat4app(securityChatToken);\r\n \r\n if (chatCallback && connectionClientId) {\r\n this.connectWebsocket(chatCallback, connectionClientId);\r\n }\r\n \r\n callback(securityChatToken);\r\n }\r\n \r\n getChatUrlDownload(messageFileId: string) {\r\n return this.chatUrl + \"chatmessage/getFile?messageFileId=\" + messageFileId + \"&token=\" + this.getBearerToken();\r\n }\r\n \r\n \r\n getMessageChat(chatId: string, fromId: string, toId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n getMessageChatByGrop(chatId: string, groupId: string, fromId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/byGroup/\" + chatId + \"/\" + groupId + \"/\" + fromId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n addMessageChat(chatMessage4App: ChatMessage4App): Observable<ChatMessage4App> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatMessage4App.chatId;\r\n \r\n return this.http.post<ChatMessage4App>(url, chatMessage4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n props(chatFilterRequest4App: Array<ChatFilterRequest4App>): Observable<ChatUserResponse4App[]> {\r\n let url = this.chatUrl + \"chatmessage/props\";\r\n \r\n return this.http.post<ChatUserResponse4App[]>(url, chatFilterRequest4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n removeUsersChat(chatId: string, chatUsersId?: string[], chatUsersExternalId?: string[]): Observable<ChatUser4App[]> {\r\n let params = new Array();\r\n if (chatUsersId && chatUsersId.length > 0) {\r\n \r\n chatUsersId.forEach(cui => {\r\n params.push(\"chatUserId=\" + cui);\r\n });\r\n } else if (chatUsersExternalId && chatUsersExternalId.length > 0) {\r\n chatUsersExternalId.forEach(cuei => {\r\n params.push(\"chatUserExternalId=\" + cuei);\r\n })\r\n \r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + params.join(\"&\");\r\n \r\n return this.http.delete<ChatUser4App[]>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n removeUserChat(chatId: string, chatUserId?: string, chatUserExternalId?: string): Observable<ChatUser4App> {\r\n let param = \"\";\r\n if (chatUserId) {\r\n param = \"chatUserId=\" + chatUserId;\r\n } else {\r\n param = \"chatUserExternalId=\" + chatUserExternalId;\r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + param;\r\n \r\n return this.http.delete<ChatUser4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n updateUserChat(chatId: string, charUser4AppUpdate: ChatUser4App): Observable<ChatUser4App> {\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.put<ChatUser4App>(url, charUser4AppUpdate,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createUserChat(chatId: string, chatUser4App: ChatUser4App): Observable<ChatUser4App> {\r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n createUsersChat(chatId: string, chatUser4App: ChatUser4App[]): Observable<ChatUser4App[]> {\r\n let url = this.chatUrl + \"chatuser/users/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App[]>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.post<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n createUpdateChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.put<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getLastMessageGroup(chatExternalId: string, groupId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessageGroup?chatExternalId=\" + chatExternalId + \"&groupId=\" + groupId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n getLastMessage(chatExternalId: string, chatUserExternalId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessage?chatExternalId=\" + chatExternalId + \"&chatUserExternalId=\" + chatUserExternalId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n countNotReadMessages(chatUserExternalId: string, chatExternalId?: string, groupId?: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/countNotReadMessages?chatUserExternalId=\" + chatUserExternalId;\r\n \r\n if (chatExternalId && chatExternalId.length > 0) {\r\n url += \"&chatExternalId=\" + chatExternalId;\r\n }\r\n \r\n if (groupId && groupId.length > 0) {\r\n url += \"&groupId=\" + groupId;\r\n }\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getChatByExternalId(externalId: string): Observable<Chat4App> {\r\n \r\n let url = this.chatUrl + \"chat?externalId=\" + externalId;\r\n \r\n return this.http.get<Chat4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n readMessage(chatMessageId: string, toId?: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/read/\" + chatMessageId;\r\n \r\n if (toId && toId.length > 0) {\r\n url += \"/\" + toId;\r\n }\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n online(chatId: string, chatUserId: string): Observable<number> {\r\n \r\n let url = this.chatUrl + \"chatmessage/online/\" + chatId + \"/\" + chatUserId;\r\n \r\n return this.http.get<number>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n sendFile(chatId: string, fromId: string, toId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFile/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n \r\n sendFileGroup(chatId: string, fromId: string, groupId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFileGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n\r\n translateMessage(chatMessageId: string, languageTarget: string): Observable<Chat4AppTranslate> {\r\n \r\n let url = this.chatUrl + \"chatmessage/translate/\" + chatMessageId + \"/\" + languageTarget;\r\n \r\n return this.http.get<Chat4AppTranslate>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n stopTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n stopTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n \r\n /* Token */\r\n getBearerToken(): string {\r\n \r\n let ret = \"Bearer \" + window.sessionStorage.getItem(\"chat4AppSessionToken\");\r\n \r\n return ret;\r\n }\r\n \r\n \r\n setTokenChat4app(chat4AppSessionToken: string) {\r\n \r\n \r\n window.sessionStorage.setItem(\"chat4AppSessionToken\", chat4AppSessionToken);\r\n }\r\n \r\n \r\n /* Connection */\r\n \r\n onMessageFirebaseReceived(data: any, chatCallback: IChatCallback) {\r\n \r\n \r\n //alert(\"onMessageReceived connectFirebase\");\r\n \r\n if (data.type == \"msg\") {\r\n \r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n chat4appMessage.notification.body = data.body;\r\n \r\n if (data.fileId && data.fileId.length > 0) {\r\n chat4appMessage.data.fileId = data.fileId;\r\n chat4appMessage.data.fileName = data.fileName;\r\n chat4appMessage.data.fileSize = data.fileSize;\r\n chat4appMessage.data.fileType = data.fileType;\r\n \r\n }\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onMessage(chat4appMessage);\r\n \r\n } else if ((data.type == \"on\" || data.type == \"off\")) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onOffline(chat4appMessage);\r\n\r\n } else if (data.type == \"read\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onRead(chat4appMessage);\r\n } else if (data.type == \"startTyping\" || data.type == \"stopTyping\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onStartStopTyping(chat4appMessage);\r\n }\r\n \r\n }\r\n \r\n connectWebsocket(chatCallback: IChatCallback, token: string) {\r\n this.disconnect();\r\n \r\n let securityToken = this.getBearerToken();\r\n \r\n this.sock = new SockJS(this.chatServer + '/stomp/gkz-stomp-endpoint?token=' + securityToken);\r\n this.stompClient = Stomp.over(this.sock);\r\n this.stompClient.debug = function (msg: any) {\r\n //console.log(msg);\r\n }\r\n \r\n this.stompClient.connect({\"X-Authorization\": \"Bearer \" + securityToken}, (frame: any) => {\r\n //console.log(frame);\r\n \r\n this.stompClient.subscribe('/queue/' + token, (msg: any) => {\r\n //console.log('mensagem', msg);\r\n \r\n if (msg.command == \"MESSAGE\") {\r\n \r\n //console.log(msg)\r\n\r\n if (!chatCallback.isTokenFirebaseActive()) {\r\n \r\n let msgObj = JSON.parse(msg.body);\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in msgObj.data) {\r\n datTmp.set(key, msgObj.data[key]);\r\n }\r\n \r\n msgObj.data.all = datTmp;\r\n \r\n if (msgObj.data.type == \"msg\") {\r\n chatCallback.onMessage(msgObj);\r\n } else if ((msgObj.data.type == \"on\" || msgObj.data.type == \"off\")) {\r\n chatCallback.onOffline(msgObj);\r\n } else if (msgObj.data.type == \"read\" ) {\r\n chatCallback.onRead(msgObj);\r\n } else if (msgObj.data.type == \"startTyping\" || msgObj.data.type == \"stopTyping\") {\r\n chatCallback.onStartStopTyping(msgObj);\r\n }\r\n }\r\n\r\n \r\n //callback(msg.body);\r\n // ichatcallback.forEach((iChat)=>{\r\n // iChat.onMessage(JSON.parse(msg.body) );\r\n // });\r\n }\r\n \r\n });\r\n },\r\n (message: any) => {\r\n // check message for disconnect\r\n //console.log(\"Disconnect\");\r\n \r\n setTimeout(() => {\r\n this.connectWebsocket(chatCallback, token);\r\n }, 500);\r\n \r\n });\r\n \r\n }\r\n \r\n disconnect() {\r\n// console.log(\"disconnect\")\r\n try {\r\n if (this.stompClient) {\r\n this.stompClient.disconnect();\r\n }\r\n \r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n convertChat4AppMessageReceiveToChatMessage4App(msg: Chat4AppMessageReceive): ChatMessage4App{\r\n let message = new ChatMessage4App();\r\n message.body = msg.notification.body;\r\n message.chatId = msg.data.chatId;\r\n message.fromId = msg.data.fromId;\r\n message.toId = msg.data.toId;\r\n message.groupId = msg.data.groupId;\r\n message.dateHourIncluded = moment.utc(msg.data.dateHour, \"DD-MM-YYYY hh:mm:ss\").toDate();\r\n message.id = msg.data.chatMessageId;\r\n\r\n if (msg.data.fileId && msg.data.fileId.length > 0) {\r\n let messageFile = new ChatMessageFile4App();\r\n \r\n messageFile.id = msg.data.fileId;\r\n messageFile.name = msg.data.fileName;\r\n messageFile.size = msg.data.fileSize;\r\n messageFile.type = msg.data.fileType;\r\n\r\n message.chatMessageFile = messageFile;\r\n }\r\n\r\n return message;\r\n\r\n }\r\n \r\n }\r\n \r\n \r\n export class Chat4App {\r\n id: string;\r\n configId: string;\r\n externalId: string;\r\n title: string;\r\n status: ChatStatus4App;\r\n users: Array<ChatUser4App>;\r\n \r\n }\r\n export class ChatUser4App {\r\n id: string;\r\n name: string;\r\n clientToken: string;\r\n picturePath: string;\r\n email: string;\r\n externalId: string;\r\n status: ChatUserStatus4App;\r\n }\r\n export class ChatMessage4App {\r\n id: string;\r\n fromId: string;\r\n toId: string;\r\n chatId: string;\r\n title: string;\r\n body: string;\r\n meta: Array<ChatMessageMeta4App>;\r\n groupId: string;\r\n read: Boolean;\r\n dateHourIncluded: Date;\r\n chatMessageFile: ChatMessageFile4App;\r\n }\r\n export class ChatMessageFile4App {\r\n id: string;\r\n name: string;\r\n type: string;\r\n size: number;\r\n fullPath: string;\r\n }\r\n export class ChatMessageMeta4App {\r\n name: string;\r\n value: string;\r\n }\r\n export class Chat4AppMessageReceive {\r\n data: Chat4AppMessageReceiveData = new Chat4AppMessageReceiveData();\r\n notification: Chat4AppMessageReceiveNotification = new Chat4AppMessageReceiveNotification();\r\n token: string;\r\n }\r\n export class Chat4AppMessageReceiveData {\r\n toId: string;\r\n chatId: string;\r\n dateHour: string;\r\n chatMessageId: string;\r\n externalId: string;\r\n type: string;\r\n fromId: string;\r\n groupId: string;\r\n fileId: string;\r\n fileName: string;\r\n fileSize: number;\r\n fileType: string;\r\n all: Map<string, string>;\r\n }\r\n export class Chat4AppMessageReceiveNotification {\r\n body: string;\r\n }\r\n \r\n export class ChatUserResponse4App {\r\n totalMessages: number;\r\n chat: Chat4App;\r\n chatMessage: ChatMessage4App;\r\n chats: ChatUserResponse4App[];\r\n }\r\n export class ChatFilterRequest4App {\r\n type: ChatFilterType;\r\n chatExternalId: string;\r\n chatUserExternalId: string;\r\n groupId: string;\r\n }\r\n export class Chat4AppConfig {\r\n constructor(public endpoint: string) {\r\n \r\n }\r\n }\r\n\r\n export class Chat4AppTranslate {\r\n text: string;\r\n translatedText: string;\r\n originalSourceLanguageCode: string;\r\n sourceLanguageCode: string;\r\n targetLanguageCode: string;\r\n messageId: string;\r\n }\r\n\r\n\r\n \r\n export enum ChatStatus4App {\r\n CREATED = \"CREATED\",\r\n CLOSED = \"CLOSED\"\r\n \r\n }\r\n export enum ChatUserStatus4App {\r\n REMOVED = \"REMOVED\"\r\n \r\n }\r\n export enum ChatFilterType {\r\n COUNT_NOT_READ = 1,\r\n LAST_MESSAGE = 2\r\n }\r\n \r\n export interface IChatCallback {\r\n isTokenFirebaseActive(): Boolean;\r\n onMessage(msg: Chat4AppMessageReceive): void;\r\n onOffline(msg: Chat4AppMessageReceive): void;\r\n onRead(msg: Chat4AppMessageReceive): void;\r\n onStartStopTyping(msg: Chat4AppMessageReceive): void;\r\n\r\n\r\n }\r\n ","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-chat4app-client-angular',\n template: `\n <p>\n chat4app-client-angular works!\n </p>\n `,\n styles: [\n ]\n})\nexport class Chat4appClientAngularComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Chat4appClientAngularComponent } from './chat4app-client-angular.component';\n\n\n\n@NgModule({\n declarations: [Chat4appClientAngularComponent],\n imports: [\n ],\n exports: [Chat4appClientAngularComponent]\n})\nexport class Chat4appClientAngularModule { }\n","/*\n * Public API Surface of chat4app-client-angular\n */\n\nexport * from './lib/chat4app-client-angular.service';\nexport * from './lib/chat4app-client-angular.component';\nexport * from './lib/chat4app-client-angular.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAYa,4BAA4B,CAAA;AAQrC,IAAA,WAAA,CAAqB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QANrC,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QAChB,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;KAOZ;IACD,QAAQ,GAAA;KACP;AAED,IAAA,MAAM,CAAC,cAA8B,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ,GAAG,UAAU,CAAE;KACtD;AAED,IAAA,IAAI,CAAC,iBAAyB,EAAE,QAAa,EAAE,YAA4B,EAAE,kBAA2B,EAAA;AAEpG,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAC;AACzD,YAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACtC,SAAA;QACD,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAC;AAC7D,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAC/C,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAEzC,IAAI,YAAY,IAAI,kBAAkB,EAAE;AACtC,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;AACzD,SAAA;QAED,QAAQ,CAAC,iBAAiB,CAAC,CAAC;KAC/B;AAED,IAAA,kBAAkB,CAAC,aAAqB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,oCAAoC,GAAG,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;KAChH;AAGD,IAAA,cAAc,CAAC,MAAc,EAAE,MAAc,EAAE,IAAY,EAAA;AACzD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,cAAc,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;AAE7E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,GAAG,EAC9C;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KAEL;AACD,IAAA,oBAAoB,CAAC,MAAc,EAAE,OAAe,EAAE,MAAc,EAAA;AAClE,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,sBAAsB,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC;AAExF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,GAAG,EAC9C;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KAEL;AAGD,IAAA,cAAc,CAAC,eAAgC,EAAA;QAC7C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC;QAEjE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAkB,GAAG,EAAE,eAAe,EACzD;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KAEL;AACD,IAAA,KAAK,CAAC,qBAAmD,EAAA;AACvD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC;QAE7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAyB,GAAG,EAAE,qBAAqB,EACtE;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KAEL;AAGD,IAAA,eAAe,CAAC,MAAc,EAAE,WAAsB,EAAE,mBAA8B,EAAA;AACpF,QAAA,IAAI,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;AACzB,QAAA,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAEzC,YAAA,WAAW,CAAC,OAAO,CAAC,GAAG,IAAG;AACxB,gBAAA,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;AACnC,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;AAChE,YAAA,mBAAmB,CAAC,OAAO,CAAC,IAAI,IAAG;AACjC,gBAAA,MAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;AAC5C,aAAC,CAAC,CAAA;AAEH,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEvE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAiB,GAAG,EACzC;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AAED,IAAA,cAAc,CAAC,MAAc,EAAE,UAAmB,EAAE,kBAA2B,EAAA;QAC7E,IAAI,KAAK,GAAG,EAAE,CAAC;AACf,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,KAAK,GAAG,aAAa,GAAG,UAAU,CAAC;AACpC,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,GAAG,qBAAqB,GAAG,kBAAkB,CAAC;AACpD,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC;AAE5D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAe,GAAG,EACvC;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;IAED,cAAc,CAAC,MAAc,EAAE,kBAAgC,EAAA;QAE7D,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;QAE9C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,GAAG,EAAE,kBAAkB,EACxD;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;IAGD,cAAc,CAAC,MAAc,EAAE,YAA0B,EAAA;QACvD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;QAE9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAe,GAAG,EAAE,YAAY,EACnD;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;IAED,eAAe,CAAC,MAAc,EAAE,YAA4B,EAAA;QAC1D,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,iBAAiB,GAAG,MAAM,CAAC;QAEpD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,GAAG,EAAE,YAAY,EACrD;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AAGD,IAAA,UAAU,CAAC,QAAkB,EAAA;AAC3B,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEhC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAW,GAAG,EAAE,QAAQ,EAC3C;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AACD,IAAA,gBAAgB,CAAC,QAAkB,EAAA;AACjC,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEhC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,GAAG,EAAE,QAAQ,EAC1C;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;IAGD,mBAAmB,CAAC,cAAsB,EAAE,OAAe,EAAA;AAEzD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,8CAA8C,GAAG,cAAc,GAAG,WAAW,GAAG,OAAO,CAAC;AAEjH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,GAAG,EAC5C;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;IACD,cAAc,CAAC,cAAsB,EAAE,kBAA0B,EAAA;AAE/D,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,yCAAyC,GAAG,cAAc,GAAG,sBAAsB,GAAG,kBAAkB,CAAC;AAElI,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,GAAG,EAC5C;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AACD,IAAA,oBAAoB,CAAC,kBAA0B,EAAE,cAAuB,EAAE,OAAgB,EAAA;QAExF,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,sDAAsD,GAAG,kBAAkB,CAAC;AAErG,QAAA,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,YAAA,GAAG,IAAI,kBAAkB,GAAG,cAAc,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,GAAG,IAAI,WAAW,GAAG,OAAO,CAAC;AAC9B,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,GAAG,EAC5C;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AAGD,IAAA,mBAAmB,CAAC,UAAkB,EAAA;QAEpC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,kBAAkB,GAAG,UAAU,CAAC;AAEzD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,GAAG,EAChC;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;IACD,WAAW,CAAC,aAAqB,EAAE,IAAa,EAAA;QAE9C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,mBAAmB,GAAG,aAAa,CAAC;AAE7D,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC;AACnB,SAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,GAAG,EAAE,IAAI,EAClC;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;IACD,MAAM,CAAC,MAAc,EAAE,UAAkB,EAAA;AAEvC,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,qBAAqB,GAAG,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC;AAE3E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,EAC9B;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AAGD,IAAA,QAAQ,CAAC,MAAc,EAAE,MAAc,EAAE,IAAY,EAAE,YAAkB,EAAA;AACvE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,uBAAuB,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;AAE7F,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;AAC1C,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CAAsB,QAAQ,EAAE,QAAQ,EAC3C;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAC;KACR;AAED,IAAA,aAAa,CAAC,MAAc,EAAE,MAAc,EAAE,OAAe,EAAE,YAAkB,EAAA;AAC/E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,4BAA4B,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;AAErG,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;AAC1C,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CAAsB,QAAQ,EAAE,QAAQ,EAC3C;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAC;KACR;IAED,gBAAgB,CAAC,aAAqB,EAAE,cAAsB,EAAA;AAE5D,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,wBAAwB,GAAG,aAAa,GAAG,GAAG,GAAG,cAAc,CAAC;AAEzF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,GAAG,EACzC;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AAED,IAAA,WAAW,CAAC,MAAc,EAAC,MAAc,EAAE,IAAY,EAAA;AAErD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,0BAA0B,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;QAEzF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,GAAG,EAAE,IAAI,EAClC;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AAED,IAAA,gBAAgB,CAAC,MAAc,EAAC,MAAc,EAAE,OAAe,EAAA;AAE7D,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,+BAA+B,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;QAEjG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,GAAG,EAAE,IAAI,EAClC;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AACD,IAAA,UAAU,CAAC,MAAc,EAAC,MAAc,EAAE,IAAY,EAAA;AAEpD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,yBAAyB,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;QAExF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,GAAG,EAAE,IAAI,EAClC;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;AAED,IAAA,eAAe,CAAC,MAAc,EAAC,MAAc,EAAE,OAAe,EAAA;AAE5D,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,8BAA8B,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;QAEhG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,GAAG,EAAE,IAAI,EAClC;AACE,YAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA,CAAC,CAAA;KACL;;IAID,cAAc,GAAA;AAEZ,QAAA,IAAI,GAAG,GAAG,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAE5E,QAAA,OAAO,GAAG,CAAC;KACZ;AAGD,IAAA,gBAAgB,CAAC,oBAA4B,EAAA;QAG3C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;KAC7E;;IAKD,yBAAyB,CAAC,IAAS,EAAE,YAA2B,EAAA;;AAK9D,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE;AAEtB,YAAA,IAAI,eAAe,GAAG,IAAI,sBAAsB,EAAE,CAAC;YACnD,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxD,eAAe,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClD,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtC,eAAe,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5C,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9C,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtC,eAAe,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAE9C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC1C,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC9C,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC9C,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAE/C,aAAA;AAED,YAAA,IAAI,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEvC,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;gBACpB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,aAAA;AAED,YAAA,eAAe,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AAElC,YAAA,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAEzC,SAAA;AAAM,aAAA,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG;AACpD,YAAA,IAAI,eAAe,GAAG,IAAI,sBAAsB,EAAE,CAAC;YACnD,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxD,eAAe,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClD,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtC,eAAe,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5C,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9C,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAEtC,YAAA,IAAI,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEvC,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;gBACpB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,aAAA;AAED,YAAA,eAAe,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AAElC,YAAA,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAEzC,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAG;AAC/B,YAAA,IAAI,eAAe,GAAG,IAAI,sBAAsB,EAAE,CAAC;YACnD,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxD,eAAe,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClD,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtC,eAAe,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5C,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9C,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAEtC,YAAA,IAAI,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEvC,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;gBACpB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,aAAA;AAED,YAAA,eAAe,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AAElC,YAAA,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACtC,SAAA;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,YAAY,EAAG;AACnE,YAAA,IAAI,eAAe,GAAG,IAAI,sBAAsB,EAAE,CAAC;YACnD,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACxD,eAAe,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClD,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtC,eAAe,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5C,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9C,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAEtC,YAAA,IAAI,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEvC,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;gBACpB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,aAAA;AAED,YAAA,eAAe,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AAElC,YAAA,YAAY,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AACjD,SAAA;KAEF;IAED,gBAAgB,CAAC,YAA2B,EAAE,KAAa,EAAA;QACzD,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAE1C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,kCAAkC,GAAG,aAAa,CAAC,CAAC;QAC7F,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,GAAQ,EAAA;;AAE3C,SAAC,CAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAC,iBAAiB,EAAE,SAAS,GAAG,aAAa,EAAC,EAAE,CAAC,KAAU,KAAI;;AAGtF,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,GAAQ,KAAI;;AAGzD,gBAAA,IAAI,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE;;AAI5B,oBAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,EAAE;wBAEzC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAElC,wBAAA,IAAI,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEvC,wBAAA,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE;AAC3B,4BAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,yBAAA;AAED,wBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AAEzB,wBAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE;AAC7B,4BAAA,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,yBAAA;AAAM,6BAAA,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG;AAClE,4BAAA,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,yBAAA;AAAM,6BAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,EAAG;AACtC,4BAAA,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7B,yBAAA;AAAM,6BAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,aAAa,IAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE;AACjF,4BAAA,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACxC,yBAAA;AACF,qBAAA;;;;;AAOF,iBAAA;AAEH,aAAC,CAAC,CAAC;AACL,SAAC,EACC,CAAC,OAAY,KAAI;;;YAIf,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aAC5C,EAAE,GAAG,CAAC,CAAC;AAEV,SAAC,CAAC,CAAC;KAEN;IAED,UAAU,GAAA;;QAER,IAAI;YACF,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;AAC/B,aAAA;AAEF,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,SAAA;KACF;AAED,IAAA,8CAA8C,CAAC,GAA2B,EAAA;AACxE,QAAA,IAAI,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;QACrC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,QAAA,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC;QACzF,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;AAEpC,QAAA,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAA,IAAI,WAAW,GAAG,IAAI,mBAAmB,EAAE,CAAC;YAE5C,WAAW,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YACjC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAErC,YAAA,OAAO,CAAC,eAAe,GAAG,WAAW,CAAC;AACvC,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAEhB;;;;AAxhBJ,IAAA,EAAA,IAAA,EAAA,UAAU,EAAC,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA,EAAA,EAAA;;;YARQ,UAAU,EAAA;;MAmiBJ,QAAQ,CAAA;AAQpB,CAAA;MACY,YAAY,CAAA;AAQxB,CAAA;MACY,eAAe,CAAA;AAY3B,CAAA;MACY,mBAAmB,CAAA;AAM/B,CAAA;MACY,mBAAmB,CAAA;AAG/B,CAAA;MACY,sBAAsB,CAAA;AAAnC,IAAA,WAAA,GAAA;AACE,QAAA,IAAA,CAAA,IAAI,GAA+B,IAAI,0BAA0B,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,YAAY,GAAuC,IAAI,kCAAkC,EAAE,CAAC;KAE7F;AAAA,CAAA;MACY,0BAA0B,CAAA;AActC,CAAA;MACY,kCAAkC,CAAA;AAE9C,CAAA;MAEY,oBAAoB,CAAA;AAKhC,CAAA;MACY,qBAAqB,CAAA;AAKjC,CAAA;MACY,cAAc,CAAA;AACzB,IAAA,WAAA,CAAmB,QAAgB,EAAA;QAAhB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;KAElC;AACF,CAAA;MAEY,iBAAiB,CAAA;AAO7B,CAAA;IAIW,eAIX;AAJD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AAEnB,CAAC,EAJW,cAAc,KAAd,cAAc,GAIzB,EAAA,CAAA,CAAA,CAAA;IACW,mBAGX;AAHD,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AAErB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,GAG7B,EAAA,CAAA,CAAA,CAAA;IACW,eAGX;AAHD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB,CAAA;AAClB,IAAA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAClB,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;MCroBU,8BAA8B,CAAA;AAEzC,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;;;AAfF,IAAA,EAAA,IAAA,EAAA,SAAS,EAAC,IAAA,EAAA,CAAA;AACT,gBAAA,QAAQ,EAAE,6BAA6B;AACvC,gBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AAGF,aAAA,EAAA,EAAA;;;;MCAY,2BAA2B,CAAA;;;AANvC,IAAA,EAAA,IAAA,EAAA,QAAQ,EAAC,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,8BAA8B,CAAC;AAC9C,gBAAA,OAAO,EAAE,EACR;gBACD,OAAO,EAAE,CAAC,8BAA8B,CAAC;AAC1C,aAAA,EAAA,EAAA;;;ACVD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"chat4app-client-angular.js","sources":["../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.service.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.component.ts","../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.module.ts","../../../projects/chat4app-client-angular/src/public-api.ts","../../../projects/chat4app-client-angular/src/chat4app-client-angular.ts"],"sourcesContent":["import { Injectable, OnInit } from '@angular/core';\r\nimport * as Stomp from 'stompjs';\r\nimport * as SockJS from 'sockjs-client';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport * as moment from 'moment';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Chat4appClientAngularService implements OnInit {\r\n\r\n chatServer = \"\";\r\n chatUrl = \"\";\r\n \r\n sock: any;\r\n stompClient: any;\r\n\r\n constructor( private http: HttpClient) {\r\n \r\n }\r\n ngOnInit(): void {\r\n }\r\n\r\n config(chat4AppConfig: Chat4AppConfig) {\r\n this.chatServer = chat4AppConfig.endpoint;\r\n this.chatUrl = chat4AppConfig.endpoint + \"/api/v1/\" ;\r\n }\r\n \r\n init(securityChatToken: string, callback: any, chatCallback?: IChatCallback, connectionClientId?: string) {\r\n\r\n if (!this.chatServer || this.chatServer.trim().length == 0){\r\n throw new Error(\"Endpoint is empty\");\r\n }\r\n if (!securityChatToken || securityChatToken.trim().length == 0){\r\n throw new Error(\"SecurityChatToken is empty\");\r\n }\r\n\r\n this.setTokenChat4app(securityChatToken);\r\n \r\n if (chatCallback && connectionClientId) {\r\n this.connectWebsocket(chatCallback, connectionClientId);\r\n }\r\n \r\n callback(securityChatToken);\r\n }\r\n \r\n getChatUrlDownload(messageFileId: string) {\r\n return this.chatUrl + \"chatmessage/getFile?messageFileId=\" + messageFileId + \"&token=\" + this.getBearerToken();\r\n }\r\n \r\n \r\n getMessageChat(chatId: string, fromId: string, toId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n getMessageChatByGrop(chatId: string, groupId: string, fromId: string): Observable<Array<ChatMessage4App>> {\r\n let url = this.chatUrl + \"chatmessage/byGroup/\" + chatId + \"/\" + groupId + \"/\" + fromId;\r\n \r\n return this.http.get<Array<ChatMessage4App>>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n addMessageChat(chatMessage4App: ChatMessage4App): Observable<ChatMessage4App> {\r\n let url = this.chatUrl + \"chatmessage/\" + chatMessage4App.chatId;\r\n \r\n return this.http.post<ChatMessage4App>(url, chatMessage4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n props(chatFilterRequest4App: Array<ChatFilterRequest4App>): Observable<ChatUserResponse4App[]> {\r\n let url = this.chatUrl + \"chatmessage/props\";\r\n \r\n return this.http.post<ChatUserResponse4App[]>(url, chatFilterRequest4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n \r\n }\r\n \r\n \r\n removeUsersChat(chatId: string, chatUsersId?: string[], chatUsersExternalId?: string[]): Observable<ChatUser4App[]> {\r\n let params = new Array();\r\n if (chatUsersId && chatUsersId.length > 0) {\r\n \r\n chatUsersId.forEach(cui => {\r\n params.push(\"chatUserId=\" + cui);\r\n });\r\n } else if (chatUsersExternalId && chatUsersExternalId.length > 0) {\r\n chatUsersExternalId.forEach(cuei => {\r\n params.push(\"chatUserExternalId=\" + cuei);\r\n })\r\n \r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + params.join(\"&\");\r\n \r\n return this.http.delete<ChatUser4App[]>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n removeUserChat(chatId: string, chatUserId?: string, chatUserExternalId?: string): Observable<ChatUser4App> {\r\n let param = \"\";\r\n if (chatUserId) {\r\n param = \"chatUserId=\" + chatUserId;\r\n } else {\r\n param = \"chatUserExternalId=\" + chatUserExternalId;\r\n }\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId + \"?\" + param;\r\n \r\n return this.http.delete<ChatUser4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n updateUserChat(chatId: string, charUser4AppUpdate: ChatUser4App): Observable<ChatUser4App> {\r\n \r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.put<ChatUser4App>(url, charUser4AppUpdate,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createUserChat(chatId: string, chatUser4App: ChatUser4App): Observable<ChatUser4App> {\r\n let url = this.chatUrl + \"chatuser/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n createUsersChat(chatId: string, chatUser4App: ChatUser4App[]): Observable<ChatUser4App[]> {\r\n let url = this.chatUrl + \"chatuser/users/\" + chatId;\r\n \r\n return this.http.post<ChatUser4App[]>(url, chatUser4App,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n createChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.post<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n createUpdateChat(chat4app: Chat4App): Observable<Chat4App> {\r\n let url = this.chatUrl + \"chat\";\r\n \r\n return this.http.put<Chat4App>(url, chat4app,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getLastMessageGroup(chatExternalId: string, groupId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessageGroup?chatExternalId=\" + chatExternalId + \"&groupId=\" + groupId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n getLastMessage(chatExternalId: string, chatUserExternalId: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/lastMessage?chatExternalId=\" + chatExternalId + \"&chatUserExternalId=\" + chatUserExternalId;\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n countNotReadMessages(chatUserExternalId: string, chatExternalId?: string, groupId?: string): Observable<ChatUserResponse4App> {\r\n \r\n let url = this.chatUrl + \"chatmessage/countNotReadMessages?chatUserExternalId=\" + chatUserExternalId;\r\n \r\n if (chatExternalId && chatExternalId.length > 0) {\r\n url += \"&chatExternalId=\" + chatExternalId;\r\n }\r\n \r\n if (groupId && groupId.length > 0) {\r\n url += \"&groupId=\" + groupId;\r\n }\r\n \r\n return this.http.get<ChatUserResponse4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n getChatByExternalId(externalId: string): Observable<Chat4App> {\r\n \r\n let url = this.chatUrl + \"chat?externalId=\" + externalId;\r\n \r\n return this.http.get<Chat4App>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n readMessage(chatMessageId: string, toId?: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/read/\" + chatMessageId;\r\n \r\n if (toId && toId.length > 0) {\r\n url += \"/\" + toId;\r\n }\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n online(chatId: string, chatUserId: string): Observable<number> {\r\n \r\n let url = this.chatUrl + \"chatmessage/online/\" + chatId + \"/\" + chatUserId;\r\n \r\n return this.http.get<number>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n \r\n \r\n sendFile(chatId: string, fromId: string, toId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFile/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n \r\n sendFileGroup(chatId: string, fromId: string, groupId: string, fileToUpload: File): Observable<ChatMessageFile4App> {\r\n const endpoint = this.chatUrl + \"chatmessage/sendFileGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n const formData: FormData = new FormData();\r\n formData.append('file', fileToUpload);\r\n \r\n return this.http\r\n .post<ChatMessageFile4App>(endpoint, formData,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n });\r\n }\r\n\r\n translateMessage(chatMessageId: string, languageTarget: string): Observable<Chat4AppTranslate> {\r\n \r\n let url = this.chatUrl + \"chatmessage/translate/\" + chatMessageId + \"/\" + languageTarget;\r\n \r\n return this.http.get<Chat4AppTranslate>(url,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n startTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/startTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n stopTyping(chatId: string,fromId: string, toId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTyping/\" + chatId + \"/\" + fromId + \"/\" + toId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n stopTypingGroup(chatId: string,fromId: string, groupId: string): Observable<void> {\r\n \r\n let url = this.chatUrl + \"chatmessage/stopTypingGroup/\" + chatId + \"/\" + fromId + \"/\" + groupId;\r\n \r\n return this.http.put<void>(url, null,\r\n {\r\n headers: new HttpHeaders().set('Authorization', this.getBearerToken())\r\n })\r\n }\r\n\r\n \r\n /* Token */\r\n getBearerToken(): string {\r\n \r\n let ret = \"Bearer \" + window.sessionStorage.getItem(\"chat4AppSessionToken\");\r\n \r\n return ret;\r\n }\r\n \r\n \r\n setTokenChat4app(chat4AppSessionToken: string) {\r\n \r\n \r\n window.sessionStorage.setItem(\"chat4AppSessionToken\", chat4AppSessionToken);\r\n }\r\n \r\n \r\n /* Connection */\r\n \r\n onMessageFirebaseReceived(data: any, chatCallback: IChatCallback) {\r\n \r\n \r\n //alert(\"onMessageReceived connectFirebase\");\r\n \r\n if (data.type == \"msg\") {\r\n \r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n chat4appMessage.notification.body = data.body;\r\n \r\n if (data.fileId && data.fileId.length > 0) {\r\n chat4appMessage.data.fileId = data.fileId;\r\n chat4appMessage.data.fileName = data.fileName;\r\n chat4appMessage.data.fileSize = data.fileSize;\r\n chat4appMessage.data.fileType = data.fileType;\r\n \r\n }\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onMessage(chat4appMessage);\r\n \r\n } else if ((data.type == \"on\" || data.type == \"off\")) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onOffline(chat4appMessage);\r\n\r\n } else if (data.type == \"read\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onRead(chat4appMessage);\r\n } else if (data.type == \"startTyping\" || data.type == \"stopTyping\" ) {\r\n let chat4appMessage = new Chat4AppMessageReceive();\r\n chat4appMessage.data.chatId = data.chatId;\r\n chat4appMessage.data.chatMessageId = data.chatMessageId;\r\n chat4appMessage.data.externalId = data.externalId;\r\n chat4appMessage.data.fromId = data.fromId;\r\n chat4appMessage.data.toId = data.toId;\r\n chat4appMessage.data.groupId = data.groupId;\r\n chat4appMessage.data.dateHour = data.dateHour;\r\n chat4appMessage.data.type = data.type;\r\n\r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in data) {\r\n datTmp.set(key, data[key]);\r\n }\r\n \r\n chat4appMessage.data.all = datTmp;\r\n \r\n chatCallback.onStartStopTyping(chat4appMessage);\r\n }\r\n \r\n }\r\n \r\n connectWebsocket(chatCallback: IChatCallback, token: string) {\r\n this.disconnect();\r\n \r\n let securityToken = this.getBearerToken();\r\n \r\n this.sock = new SockJS(this.chatServer + '/stomp/gkz-stomp-endpoint?token=' + securityToken);\r\n this.stompClient = Stomp.over(this.sock);\r\n this.stompClient.debug = function (msg: any) {\r\n //console.log(msg);\r\n }\r\n\r\n let tokenAuth = \"\";\r\n\r\n if (securityToken && securityToken.startsWith(\"Bearer \")){\r\n tokenAuth = securityToken;\r\n } else {\r\n tokenAuth = \"Bearer \" + securityToken;\r\n }\r\n \r\n this.stompClient.connect({\"X-Authorization\": tokenAuth}, (frame: any) => {\r\n //console.log(frame);\r\n \r\n this.stompClient.subscribe('/queue/' + token, (msg: any) => {\r\n //console.log('mensagem', msg);\r\n \r\n if (msg.command == \"MESSAGE\") {\r\n \r\n //console.log(msg)\r\n\r\n if (!chatCallback.isTokenFirebaseActive()) {\r\n \r\n let msgObj = JSON.parse(msg.body);\r\n \r\n let datTmp = new Map<string, string>();\r\n \r\n for (let key in msgObj.data) {\r\n datTmp.set(key, msgObj.data[key]);\r\n }\r\n \r\n msgObj.data.all = datTmp;\r\n \r\n if (msgObj.data.type == \"msg\") {\r\n chatCallback.onMessage(msgObj);\r\n } else if ((msgObj.data.type == \"on\" || msgObj.data.type == \"off\")) {\r\n chatCallback.onOffline(msgObj);\r\n } else if (msgObj.data.type == \"read\" ) {\r\n chatCallback.onRead(msgObj);\r\n } else if (msgObj.data.type == \"startTyping\" || msgObj.data.type == \"stopTyping\") {\r\n chatCallback.onStartStopTyping(msgObj);\r\n }\r\n }\r\n\r\n \r\n //callback(msg.body);\r\n // ichatcallback.forEach((iChat)=>{\r\n // iChat.onMessage(JSON.parse(msg.body) );\r\n // });\r\n }\r\n \r\n });\r\n },\r\n (message: any) => {\r\n // check message for disconnect\r\n //console.log(\"Disconnect\");\r\n \r\n setTimeout(() => {\r\n this.connectWebsocket(chatCallback, token);\r\n }, 500);\r\n \r\n });\r\n \r\n }\r\n \r\n disconnect() {\r\n// console.log(\"disconnect\")\r\n try {\r\n if (this.stompClient) {\r\n this.stompClient.disconnect();\r\n }\r\n \r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n convertChat4AppMessageReceiveToChatMessage4App(msg: Chat4AppMessageReceive): ChatMessage4App{\r\n let message = new ChatMessage4App();\r\n message.body = msg.notification.body;\r\n message.chatId = msg.data.chatId;\r\n message.fromId = msg.data.fromId;\r\n message.toId = msg.data.toId;\r\n message.groupId = msg.data.groupId;\r\n message.dateHourIncluded = moment.utc(msg.data.dateHour, \"DD-MM-YYYY hh:mm:ss\").toDate();\r\n message.id = msg.data.chatMessageId;\r\n\r\n if (msg.data.fileId && msg.data.fileId.length > 0) {\r\n let messageFile = new ChatMessageFile4App();\r\n \r\n messageFile.id = msg.data.fileId;\r\n messageFile.name = msg.data.fileName;\r\n messageFile.size = msg.data.fileSize;\r\n messageFile.type = msg.data.fileType;\r\n\r\n message.chatMessageFile = messageFile;\r\n }\r\n\r\n return message;\r\n\r\n }\r\n \r\n }\r\n \r\n \r\n export class Chat4App {\r\n id: string;\r\n configId: string;\r\n externalId: string;\r\n title: string;\r\n status: ChatStatus4App;\r\n users: Array<ChatUser4App>;\r\n \r\n }\r\n export class ChatUser4App {\r\n id: string;\r\n name: string;\r\n clientToken: string;\r\n picturePath: string;\r\n email: string;\r\n externalId: string;\r\n status: ChatUserStatus4App;\r\n }\r\n export class ChatMessage4App {\r\n id: string;\r\n fromId: string;\r\n toId: string;\r\n chatId: string;\r\n title: string;\r\n body: string;\r\n meta: Array<ChatMessageMeta4App>;\r\n groupId: string;\r\n read: Boolean;\r\n dateHourIncluded: Date;\r\n chatMessageFile: ChatMessageFile4App;\r\n }\r\n export class ChatMessageFile4App {\r\n id: string;\r\n name: string;\r\n type: string;\r\n size: number;\r\n fullPath: string;\r\n }\r\n export class ChatMessageMeta4App {\r\n name: string;\r\n value: string;\r\n }\r\n export class Chat4AppMessageReceive {\r\n data: Chat4AppMessageReceiveData = new Chat4AppMessageReceiveData();\r\n notification: Chat4AppMessageReceiveNotification = new Chat4AppMessageReceiveNotification();\r\n token: string;\r\n }\r\n export class Chat4AppMessageReceiveData {\r\n toId: string;\r\n chatId: string;\r\n dateHour: string;\r\n chatMessageId: string;\r\n externalId: string;\r\n type: string;\r\n fromId: string;\r\n groupId: string;\r\n fileId: string;\r\n fileName: string;\r\n fileSize: number;\r\n fileType: string;\r\n all: Map<string, string>;\r\n }\r\n export class Chat4AppMessageReceiveNotification {\r\n body: string;\r\n }\r\n \r\n export class ChatUserResponse4App {\r\n totalMessages: number;\r\n chat: Chat4App;\r\n chatMessage: ChatMessage4App;\r\n chats: ChatUserResponse4App[];\r\n }\r\n export class ChatFilterRequest4App {\r\n type: ChatFilterType;\r\n chatExternalId: string;\r\n chatUserExternalId: string;\r\n groupId: string;\r\n }\r\n export class Chat4AppConfig {\r\n constructor(public endpoint: string) {\r\n \r\n }\r\n }\r\n\r\n export class Chat4AppTranslate {\r\n text: string;\r\n translatedText: string;\r\n originalSourceLanguageCode: string;\r\n sourceLanguageCode: string;\r\n targetLanguageCode: string;\r\n messageId: string;\r\n }\r\n\r\n\r\n \r\n export enum ChatStatus4App {\r\n CREATED = \"CREATED\",\r\n CLOSED = \"CLOSED\"\r\n \r\n }\r\n export enum ChatUserStatus4App {\r\n REMOVED = \"REMOVED\"\r\n \r\n }\r\n export enum ChatFilterType {\r\n COUNT_NOT_READ = 1,\r\n LAST_MESSAGE = 2\r\n }\r\n \r\n export interface IChatCallback {\r\n isTokenFirebaseActive(): Boolean;\r\n onMessage(msg: Chat4AppMessageReceive): void;\r\n onOffline(msg: Chat4AppMessageReceive): void;\r\n onRead(msg: Chat4AppMessageReceive): void;\r\n onStartStopTyping(msg: Chat4AppMessageReceive): void;\r\n\r\n\r\n }\r\n ","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-chat4app-client-angular',\n template: `\n <p>\n chat4app-client-angular works!\n </p>\n `,\n styles: [\n ]\n})\nexport class Chat4appClientAngularComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Chat4appClientAngularComponent } from './chat4app-client-angular.component';\n\n\n\n@NgModule({\n declarations: [Chat4appClientAngularComponent],\n imports: [\n ],\n exports: [Chat4appClientAngularComponent]\n})\nexport class Chat4appClientAngularModule { }\n","/*\n * Public API Surface of chat4app-client-angular\n */\n\nexport * from './lib/chat4app-client-angular.service';\nexport * from './lib/chat4app-client-angular.component';\nexport * from './lib/chat4app-client-angular.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat4app-client-angular.service.d.ts","sourceRoot":"","sources":["../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat4app-client-angular.service.d.ts","sourceRoot":"","sources":["../../../projects/chat4app-client-angular/src/lib/chat4app-client-angular.service.ts"],"names":[],"mappings":"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"}
|