chat4app-client-angular 0.0.9 → 0.0.11
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 +520 -0
- package/bundles/chat4app-client-angular.umd.js.map +1 -0
- package/bundles/chat4app-client-angular.umd.min.js +2 -0
- package/bundles/chat4app-client-angular.umd.min.js.map +1 -0
- package/chat4app-client-angular.d.ts +5 -0
- package/chat4app-client-angular.d.ts.map +1 -0
- package/chat4app-client-angular.metadata.json +1 -0
- package/esm2015/chat4app-client-angular.js +5 -0
- package/esm2015/lib/chat4app-client-angular.component.js +18 -0
- package/esm2015/lib/chat4app-client-angular.module.js +12 -0
- package/esm2015/lib/chat4app-client-angular.service.js +407 -0
- package/esm2015/public-api.js +7 -0
- package/fesm2015/chat4app-client-angular.js +445 -0
- package/fesm2015/chat4app-client-angular.js.map +1 -0
- package/lib/chat4app-client-angular.component.d.ts +6 -0
- package/lib/chat4app-client-angular.component.d.ts.map +1 -0
- package/lib/chat4app-client-angular.module.d.ts +3 -0
- package/lib/chat4app-client-angular.module.d.ts.map +1 -0
- package/lib/chat4app-client-angular.service.d.ts +149 -0
- package/lib/chat4app-client-angular.service.d.ts.map +1 -0
- package/package.json +18 -10
- package/{src/public-api.ts → public-api.d.ts} +1 -4
- package/public-api.d.ts.map +1 -0
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -7
- package/src/lib/chat4app-client-angular.component.spec.ts +0 -25
- package/src/lib/chat4app-client-angular.component.ts +0 -20
- package/src/lib/chat4app-client-angular.module.ts +0 -12
- package/src/lib/chat4app-client-angular.service.spec.ts +0 -16
- package/src/lib/chat4app-client-angular.service.ts +0 -594
- package/src/test.ts +0 -26
- package/tsconfig.lib.json +0 -26
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
- package/tslint.json +0 -17
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as Stomp from 'stompjs';
|
|
3
|
+
import * as SockJS from 'sockjs-client';
|
|
4
|
+
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
5
|
+
import * as moment from 'moment';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
export class Chat4appClientAngularService {
|
|
9
|
+
constructor(http) {
|
|
10
|
+
this.http = http;
|
|
11
|
+
this.chatServer = "";
|
|
12
|
+
this.chatUrl = "";
|
|
13
|
+
}
|
|
14
|
+
ngOnInit() {
|
|
15
|
+
}
|
|
16
|
+
config(chat4AppConfig) {
|
|
17
|
+
this.chatServer = chat4AppConfig.endpoint;
|
|
18
|
+
this.chatUrl = chat4AppConfig.endpoint + "/api/v1/";
|
|
19
|
+
}
|
|
20
|
+
init(securityChatToken, callback, chatCallback, connectionClientId) {
|
|
21
|
+
if (!this.chatServer || this.chatServer.trim().length == 0) {
|
|
22
|
+
throw new Error("Endpoint is empty");
|
|
23
|
+
}
|
|
24
|
+
if (!securityChatToken || securityChatToken.trim().length == 0) {
|
|
25
|
+
throw new Error("SecurityChatToken is empty");
|
|
26
|
+
}
|
|
27
|
+
this.setTokenChat4app(securityChatToken);
|
|
28
|
+
if (chatCallback && connectionClientId) {
|
|
29
|
+
this.connectWebsocket(chatCallback, connectionClientId);
|
|
30
|
+
}
|
|
31
|
+
callback(securityChatToken);
|
|
32
|
+
}
|
|
33
|
+
getChatUrlDownload(messageFileId) {
|
|
34
|
+
return this.chatUrl + "chatmessage/getFile?messageFileId=" + messageFileId + "&token=" + this.getBearerToken();
|
|
35
|
+
}
|
|
36
|
+
getMessageChat(chatId, fromId, toId) {
|
|
37
|
+
let url = this.chatUrl + "chatmessage/" + chatId + "/" + fromId + "/" + toId;
|
|
38
|
+
return this.http.get(url, {
|
|
39
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
getMessageChatByGrop(chatId, groupId, fromId) {
|
|
43
|
+
let url = this.chatUrl + "chatmessage/byGroup/" + chatId + "/" + groupId + "/" + fromId;
|
|
44
|
+
return this.http.get(url, {
|
|
45
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
addMessageChat(chatMessage4App) {
|
|
49
|
+
let url = this.chatUrl + "chatmessage/" + chatMessage4App.chatId;
|
|
50
|
+
return this.http.post(url, chatMessage4App, {
|
|
51
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
props(chatFilterRequest4App) {
|
|
55
|
+
let url = this.chatUrl + "chatmessage/props";
|
|
56
|
+
return this.http.post(url, chatFilterRequest4App, {
|
|
57
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
removeUsersChat(chatId, chatUsersId, chatUsersExternalId) {
|
|
61
|
+
let params = new Array();
|
|
62
|
+
if (chatUsersId && chatUsersId.length > 0) {
|
|
63
|
+
chatUsersId.forEach(cui => {
|
|
64
|
+
params.push("chatUserId=" + cui);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else if (chatUsersExternalId && chatUsersExternalId.length > 0) {
|
|
68
|
+
chatUsersExternalId.forEach(cuei => {
|
|
69
|
+
params.push("chatUserExternalId=" + cuei);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
let url = this.chatUrl + "chatuser/" + chatId + "?" + params.join("&");
|
|
73
|
+
return this.http.delete(url, {
|
|
74
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
removeUserChat(chatId, chatUserId, chatUserExternalId) {
|
|
78
|
+
let param = "";
|
|
79
|
+
if (chatUserId) {
|
|
80
|
+
param = "chatUserId=" + chatUserId;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
param = "chatUserExternalId=" + chatUserExternalId;
|
|
84
|
+
}
|
|
85
|
+
let url = this.chatUrl + "chatuser/" + chatId + "?" + param;
|
|
86
|
+
return this.http.delete(url, {
|
|
87
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
updateUserChat(chatId, charUser4AppUpdate) {
|
|
91
|
+
let url = this.chatUrl + "chatuser/" + chatId;
|
|
92
|
+
return this.http.put(url, charUser4AppUpdate, {
|
|
93
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
createUserChat(chatId, chatUser4App) {
|
|
97
|
+
let url = this.chatUrl + "chatuser/" + chatId;
|
|
98
|
+
return this.http.post(url, chatUser4App, {
|
|
99
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
createUsersChat(chatId, chatUser4App) {
|
|
103
|
+
let url = this.chatUrl + "chatuser/users/" + chatId;
|
|
104
|
+
return this.http.post(url, chatUser4App, {
|
|
105
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
createChat(chat4app) {
|
|
109
|
+
let url = this.chatUrl + "chat";
|
|
110
|
+
return this.http.post(url, chat4app, {
|
|
111
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
createUpdateChat(chat4app) {
|
|
115
|
+
let url = this.chatUrl + "chat";
|
|
116
|
+
return this.http.put(url, chat4app, {
|
|
117
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
getLastMessageGroup(chatExternalId, groupId) {
|
|
121
|
+
let url = this.chatUrl + "chatmessage/lastMessageGroup?chatExternalId=" + chatExternalId + "&groupId=" + groupId;
|
|
122
|
+
return this.http.get(url, {
|
|
123
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
getLastMessage(chatExternalId, chatUserExternalId) {
|
|
127
|
+
let url = this.chatUrl + "chatmessage/lastMessage?chatExternalId=" + chatExternalId + "&chatUserExternalId=" + chatUserExternalId;
|
|
128
|
+
return this.http.get(url, {
|
|
129
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
countNotReadMessages(chatUserExternalId, chatExternalId, groupId) {
|
|
133
|
+
let url = this.chatUrl + "chatmessage/countNotReadMessages?chatUserExternalId=" + chatUserExternalId;
|
|
134
|
+
if (chatExternalId && chatExternalId.length > 0) {
|
|
135
|
+
url += "&chatExternalId=" + chatExternalId;
|
|
136
|
+
}
|
|
137
|
+
if (groupId && groupId.length > 0) {
|
|
138
|
+
url += "&groupId=" + groupId;
|
|
139
|
+
}
|
|
140
|
+
return this.http.get(url, {
|
|
141
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
getChatByExternalId(externalId) {
|
|
145
|
+
let url = this.chatUrl + "chat?externalId=" + externalId;
|
|
146
|
+
return this.http.get(url, {
|
|
147
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
readMessage(chatMessageId, toId) {
|
|
151
|
+
let url = this.chatUrl + "chatmessage/read/" + chatMessageId;
|
|
152
|
+
if (toId && toId.length > 0) {
|
|
153
|
+
url += "/" + toId;
|
|
154
|
+
}
|
|
155
|
+
return this.http.put(url, null, {
|
|
156
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
online(chatId, chatUserId) {
|
|
160
|
+
let url = this.chatUrl + "chatmessage/online/" + chatId + "/" + chatUserId;
|
|
161
|
+
return this.http.get(url, {
|
|
162
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
sendFile(chatId, fromId, toId, fileToUpload) {
|
|
166
|
+
const endpoint = this.chatUrl + "chatmessage/sendFile/" + chatId + "/" + fromId + "/" + toId;
|
|
167
|
+
const formData = new FormData();
|
|
168
|
+
formData.append('file', fileToUpload);
|
|
169
|
+
return this.http
|
|
170
|
+
.post(endpoint, formData, {
|
|
171
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
sendFileGroup(chatId, fromId, groupId, fileToUpload) {
|
|
175
|
+
const endpoint = this.chatUrl + "chatmessage/sendFileGroup/" + chatId + "/" + fromId + "/" + groupId;
|
|
176
|
+
const formData = new FormData();
|
|
177
|
+
formData.append('file', fileToUpload);
|
|
178
|
+
return this.http
|
|
179
|
+
.post(endpoint, formData, {
|
|
180
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
translateMessage(chatMessageId, languageTarget) {
|
|
184
|
+
let url = this.chatUrl + "chatmessage/translate/" + chatMessageId + "/" + languageTarget;
|
|
185
|
+
return this.http.get(url, {
|
|
186
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
startTyping(chatId, fromId, toId) {
|
|
190
|
+
let url = this.chatUrl + "chatmessage/startTyping/" + chatId + "/" + fromId + "/" + toId;
|
|
191
|
+
return this.http.put(url, null, {
|
|
192
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
startTypingGroup(chatId, fromId, groupId) {
|
|
196
|
+
let url = this.chatUrl + "chatmessage/startTypingGroup/" + chatId + "/" + fromId + "/" + groupId;
|
|
197
|
+
return this.http.put(url, null, {
|
|
198
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
stopTyping(chatId, fromId, toId) {
|
|
202
|
+
let url = this.chatUrl + "chatmessage/stopTyping/" + chatId + "/" + fromId + "/" + toId;
|
|
203
|
+
return this.http.put(url, null, {
|
|
204
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
stopTypingGroup(chatId, fromId, groupId) {
|
|
208
|
+
let url = this.chatUrl + "chatmessage/stopTypingGroup/" + chatId + "/" + fromId + "/" + groupId;
|
|
209
|
+
return this.http.put(url, null, {
|
|
210
|
+
headers: new HttpHeaders().set('Authorization', this.getBearerToken())
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/* Token */
|
|
214
|
+
getBearerToken() {
|
|
215
|
+
let ret = "Bearer " + window.sessionStorage.getItem("chat4AppSessionToken");
|
|
216
|
+
return ret;
|
|
217
|
+
}
|
|
218
|
+
setTokenChat4app(chat4AppSessionToken) {
|
|
219
|
+
window.sessionStorage.setItem("chat4AppSessionToken", chat4AppSessionToken);
|
|
220
|
+
}
|
|
221
|
+
/* Connection */
|
|
222
|
+
onMessageFirebaseReceived(data, chatCallback) {
|
|
223
|
+
//alert("onMessageReceived connectFirebase");
|
|
224
|
+
if (data.type == "msg") {
|
|
225
|
+
let chat4appMessage = new Chat4AppMessageReceive();
|
|
226
|
+
chat4appMessage.data.chatId = data.chatId;
|
|
227
|
+
chat4appMessage.data.chatMessageId = data.chatMessageId;
|
|
228
|
+
chat4appMessage.data.externalId = data.externalId;
|
|
229
|
+
chat4appMessage.data.fromId = data.fromId;
|
|
230
|
+
chat4appMessage.data.toId = data.toId;
|
|
231
|
+
chat4appMessage.data.dateHour = data.dateHour;
|
|
232
|
+
chat4appMessage.data.type = data.type;
|
|
233
|
+
chat4appMessage.notification.body = data.body;
|
|
234
|
+
if (data.fileId && data.fileId.length > 0) {
|
|
235
|
+
chat4appMessage.data.fileId = data.fileId;
|
|
236
|
+
chat4appMessage.data.fileName = data.fileName;
|
|
237
|
+
chat4appMessage.data.fileSize = data.fileSize;
|
|
238
|
+
chat4appMessage.data.fileType = data.fileType;
|
|
239
|
+
}
|
|
240
|
+
let datTmp = new Map();
|
|
241
|
+
for (let key in data) {
|
|
242
|
+
datTmp.set(key, data[key]);
|
|
243
|
+
}
|
|
244
|
+
chat4appMessage.data.all = datTmp;
|
|
245
|
+
chatCallback.onMessage(chat4appMessage);
|
|
246
|
+
}
|
|
247
|
+
else if ((data.type == "on" || data.type == "off")) {
|
|
248
|
+
let chat4appMessage = new Chat4AppMessageReceive();
|
|
249
|
+
chat4appMessage.data.chatId = data.chatId;
|
|
250
|
+
chat4appMessage.data.chatMessageId = data.chatMessageId;
|
|
251
|
+
chat4appMessage.data.externalId = data.externalId;
|
|
252
|
+
chat4appMessage.data.fromId = data.fromId;
|
|
253
|
+
chat4appMessage.data.toId = data.toId;
|
|
254
|
+
chat4appMessage.data.dateHour = data.dateHour;
|
|
255
|
+
chat4appMessage.data.type = data.type;
|
|
256
|
+
let datTmp = new Map();
|
|
257
|
+
for (let key in data) {
|
|
258
|
+
datTmp.set(key, data[key]);
|
|
259
|
+
}
|
|
260
|
+
chat4appMessage.data.all = datTmp;
|
|
261
|
+
chatCallback.onOffline(chat4appMessage);
|
|
262
|
+
}
|
|
263
|
+
else if (data.type == "read") {
|
|
264
|
+
let chat4appMessage = new Chat4AppMessageReceive();
|
|
265
|
+
chat4appMessage.data.chatId = data.chatId;
|
|
266
|
+
chat4appMessage.data.chatMessageId = data.chatMessageId;
|
|
267
|
+
chat4appMessage.data.externalId = data.externalId;
|
|
268
|
+
chat4appMessage.data.fromId = data.fromId;
|
|
269
|
+
chat4appMessage.data.toId = data.toId;
|
|
270
|
+
chat4appMessage.data.dateHour = data.dateHour;
|
|
271
|
+
chat4appMessage.data.type = data.type;
|
|
272
|
+
let datTmp = new Map();
|
|
273
|
+
for (let key in data) {
|
|
274
|
+
datTmp.set(key, data[key]);
|
|
275
|
+
}
|
|
276
|
+
chat4appMessage.data.all = datTmp;
|
|
277
|
+
chatCallback.onRead(chat4appMessage);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
connectWebsocket(chatCallback, token) {
|
|
281
|
+
this.disconnect();
|
|
282
|
+
let securityToken = this.getBearerToken();
|
|
283
|
+
this.sock = new SockJS(this.chatServer + '/stomp/gkz-stomp-endpoint?token=' + securityToken);
|
|
284
|
+
this.stompClient = Stomp.over(this.sock);
|
|
285
|
+
this.stompClient.debug = function (msg) {
|
|
286
|
+
//console.log(msg);
|
|
287
|
+
};
|
|
288
|
+
this.stompClient.connect({}, (frame) => {
|
|
289
|
+
//console.log(frame);
|
|
290
|
+
this.stompClient.subscribe('/queue/' + token, (msg) => {
|
|
291
|
+
//console.log('mensagem', msg);
|
|
292
|
+
if (msg.command == "MESSAGE") {
|
|
293
|
+
//console.log(msg)
|
|
294
|
+
let msgObj = JSON.parse(msg.body);
|
|
295
|
+
let datTmp = new Map();
|
|
296
|
+
for (let key in msgObj.data) {
|
|
297
|
+
datTmp.set(key, msgObj.data[key]);
|
|
298
|
+
}
|
|
299
|
+
msgObj.data.all = datTmp;
|
|
300
|
+
if (msgObj.data.type == "msg") {
|
|
301
|
+
chatCallback.onMessage(msgObj);
|
|
302
|
+
}
|
|
303
|
+
else if ((msgObj.data.type == "on" || msgObj.data.type == "off")) {
|
|
304
|
+
chatCallback.onOffline(msgObj);
|
|
305
|
+
}
|
|
306
|
+
else if (msgObj.data.type == "read") {
|
|
307
|
+
chatCallback.onRead(msgObj);
|
|
308
|
+
}
|
|
309
|
+
//callback(msg.body);
|
|
310
|
+
// ichatcallback.forEach((iChat)=>{
|
|
311
|
+
// iChat.onMessage(JSON.parse(msg.body) );
|
|
312
|
+
// });
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}, (message) => {
|
|
316
|
+
// check message for disconnect
|
|
317
|
+
//console.log("Disconnect");
|
|
318
|
+
setTimeout(() => {
|
|
319
|
+
this.connectWebsocket(chatCallback, token);
|
|
320
|
+
}, 500);
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
disconnect() {
|
|
324
|
+
// console.log("disconnect")
|
|
325
|
+
try {
|
|
326
|
+
if (this.stompClient) {
|
|
327
|
+
this.stompClient.disconnect();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
catch (e) {
|
|
331
|
+
console.log(e);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
convertChat4AppMessageReceiveToChatMessage4App(msg) {
|
|
335
|
+
let message = new ChatMessage4App();
|
|
336
|
+
message.body = msg.notification.body;
|
|
337
|
+
message.chatId = msg.data.chatId;
|
|
338
|
+
message.fromId = msg.data.fromId;
|
|
339
|
+
message.toId = msg.data.toId;
|
|
340
|
+
message.dateHourIncluded = moment.utc(msg.data.dateHour, "DD-MM-YYYY hh:mm:ss").toDate();
|
|
341
|
+
message.id = msg.data.chatMessageId;
|
|
342
|
+
if (msg.data.fileId && msg.data.fileId.length > 0) {
|
|
343
|
+
let messageFile = new ChatMessageFile4App();
|
|
344
|
+
messageFile.id = msg.data.fileId;
|
|
345
|
+
messageFile.name = msg.data.fileName;
|
|
346
|
+
messageFile.size = msg.data.fileSize;
|
|
347
|
+
messageFile.type = msg.data.fileType;
|
|
348
|
+
message.chatMessageFile = messageFile;
|
|
349
|
+
}
|
|
350
|
+
return message;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
Chat4appClientAngularService.ɵprov = i0.ɵɵdefineInjectable({ factory: function Chat4appClientAngularService_Factory() { return new Chat4appClientAngularService(i0.ɵɵinject(i1.HttpClient)); }, token: Chat4appClientAngularService, providedIn: "root" });
|
|
354
|
+
Chat4appClientAngularService.decorators = [
|
|
355
|
+
{ type: Injectable, args: [{
|
|
356
|
+
providedIn: 'root'
|
|
357
|
+
},] }
|
|
358
|
+
];
|
|
359
|
+
Chat4appClientAngularService.ctorParameters = () => [
|
|
360
|
+
{ type: HttpClient }
|
|
361
|
+
];
|
|
362
|
+
export class Chat4App {
|
|
363
|
+
}
|
|
364
|
+
export class ChatUser4App {
|
|
365
|
+
}
|
|
366
|
+
export class ChatMessage4App {
|
|
367
|
+
}
|
|
368
|
+
export class ChatMessageFile4App {
|
|
369
|
+
}
|
|
370
|
+
export class ChatMessageMeta4App {
|
|
371
|
+
}
|
|
372
|
+
export class Chat4AppMessageReceive {
|
|
373
|
+
constructor() {
|
|
374
|
+
this.data = new Chat4AppMessageReceiveData();
|
|
375
|
+
this.notification = new Chat4AppMessageReceiveNotification();
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
export class Chat4AppMessageReceiveData {
|
|
379
|
+
}
|
|
380
|
+
export class Chat4AppMessageReceiveNotification {
|
|
381
|
+
}
|
|
382
|
+
export class ChatUserResponse4App {
|
|
383
|
+
}
|
|
384
|
+
export class ChatFilterRequest4App {
|
|
385
|
+
}
|
|
386
|
+
export class Chat4AppConfig {
|
|
387
|
+
constructor(endpoint) {
|
|
388
|
+
this.endpoint = endpoint;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
export class Chat4AppTranslate {
|
|
392
|
+
}
|
|
393
|
+
export var ChatStatus4App;
|
|
394
|
+
(function (ChatStatus4App) {
|
|
395
|
+
ChatStatus4App["CREATED"] = "CREATED";
|
|
396
|
+
ChatStatus4App["CLOSED"] = "CLOSED";
|
|
397
|
+
})(ChatStatus4App || (ChatStatus4App = {}));
|
|
398
|
+
export var ChatUserStatus4App;
|
|
399
|
+
(function (ChatUserStatus4App) {
|
|
400
|
+
ChatUserStatus4App["REMOVED"] = "REMOVED";
|
|
401
|
+
})(ChatUserStatus4App || (ChatUserStatus4App = {}));
|
|
402
|
+
export var ChatFilterType;
|
|
403
|
+
(function (ChatFilterType) {
|
|
404
|
+
ChatFilterType[ChatFilterType["COUNT_NOT_READ"] = 1] = "COUNT_NOT_READ";
|
|
405
|
+
ChatFilterType[ChatFilterType["LAST_MESSAGE"] = 2] = "LAST_MESSAGE";
|
|
406
|
+
})(ChatFilterType || (ChatFilterType = {}));
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdDRhcHAtY2xpZW50LWFuZ3VsYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQ0YXBwLWNsaWVudC1hbmd1bGFyL3NyYy9saWIvY2hhdDRhcHAtY2xpZW50LWFuZ3VsYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7OztBQU9qQyxNQUFNLE9BQU8sNEJBQTRCO0lBUXJDLFlBQXFCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFOckMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixZQUFPLEdBQUcsRUFBRSxDQUFDO0lBT2IsQ0FBQztJQUNELFFBQVE7SUFDUixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQThCO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFFO0lBQ3ZELENBQUM7SUFFRCxJQUFJLENBQUMsaUJBQXlCLEVBQUUsUUFBYSxFQUFFLFlBQTRCLEVBQUUsa0JBQTJCO1FBRXBHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztZQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsaUJBQWlC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QUFkLGNBQWMsUUFHekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFN0b21wIGZyb20gJ3N0b21wanMnO1xuaW1wb3J0ICogYXMgU29ja0pTIGZyb20gJ3NvY2tqcy1jbGllbnQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENoYXQ0YXBwQ2xpZW50QW5ndWxhclNlcnZpY2UgaW1wbGVtZW50cyBPbkluaXQgIHtcblxuICAgIGNoYXRTZXJ2ZXIgPSBcIlwiO1xuICAgIGNoYXRVcmwgPSBcIlwiO1xuICAgIFxuICAgIHNvY2s6IGFueTtcbiAgICBzdG9tcENsaWVudDogYW55O1xuXG4gICAgY29uc3RydWN0b3IoIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICBcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgfVxuXG4gICAgY29uZmlnKGNoYXQ0QXBwQ29uZmlnOiBDaGF0NEFwcENvbmZpZykge1xuICAgICAgdGhpcy5jaGF0U2VydmVyID0gY2hhdDRBcHBDb25maWcuZW5kcG9pbnQ7XG4gICAgICB0aGlzLmNoYXRVcmwgPSBjaGF0NEFwcENvbmZpZy5lbmRwb2ludCArIFwiL2FwaS92MS9cIiA7XG4gICAgfVxuICBcbiAgICBpbml0KHNlY3VyaXR5Q2hhdFRva2VuOiBzdHJpbmcsIGNhbGxiYWNrOiBhbnksIGNoYXRDYWxsYmFjaz86IElDaGF0Q2FsbGJhY2ssIGNvbm5lY3Rpb25DbGllbnRJZD86IHN0cmluZykge1xuXG4gICAgICAgIGlmICghdGhpcy5jaGF0U2VydmVyIHx8IHRoaXMuY2hhdFNlcnZlci50cmltKCkubGVuZ3RoID09IDApe1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVuZHBvaW50IGlzIGVtcHR5XCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VjdXJpdHlDaGF0VG9rZW4gfHwgc2VjdXJpdHlDaGF0VG9rZW4udHJpbSgpLmxlbmd0aCA9PSAwKXtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZWN1cml0eUNoYXRUb2tlbiBpcyBlbXB0eVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0VG9rZW5DaGF0NGFwcChzZWN1cml0eUNoYXRUb2tlbik7XG4gIFxuICAgICAgICBpZiAoY2hhdENhbGxiYWNrICYmIGNvbm5lY3Rpb25DbGllbnRJZCkge1xuICAgICAgICAgIHRoaXMuY29ubmVjdFdlYnNvY2tldChjaGF0Q2FsbGJhY2ssIGNvbm5lY3Rpb25DbGllbnRJZCk7XG4gICAgICAgIH1cbiAgXG4gICAgICAgIGNhbGxiYWNrKHNlY3VyaXR5Q2hhdFRva2VuKTtcbiAgICB9XG4gIFxuICAgIGdldENoYXRVcmxEb3dubG9hZChtZXNzYWdlRmlsZUlkOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL2dldEZpbGU/bWVzc2FnZUZpbGVJZD1cIiArIG1lc3NhZ2VGaWxlSWQgKyBcIiZ0b2tlbj1cIiArIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKTtcbiAgICB9XG4gIFxuICBcbiAgICBnZXRNZXNzYWdlQ2hhdChjaGF0SWQ6IHN0cmluZywgZnJvbUlkOiBzdHJpbmcsIHRvSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8Q2hhdE1lc3NhZ2U0QXBwPj4ge1xuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgdG9JZDtcbiAgXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcnJheTxDaGF0TWVzc2FnZTRBcHA+Pih1cmwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gIFxuICAgIH1cbiAgICBnZXRNZXNzYWdlQ2hhdEJ5R3JvcChjaGF0SWQ6IHN0cmluZywgZ3JvdXBJZDogc3RyaW5nLCBmcm9tSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8Q2hhdE1lc3NhZ2U0QXBwPj4ge1xuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvYnlHcm91cC9cIiArIGNoYXRJZCArIFwiL1wiICsgZ3JvdXBJZCArIFwiL1wiICsgZnJvbUlkO1xuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFycmF5PENoYXRNZXNzYWdlNEFwcD4+KHVybCxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcbiAgICAgICAgfSlcbiAgXG4gICAgfVxuICBcbiAgXG4gICAgYWRkTWVzc2FnZUNoYXQoY2hhdE1lc3NhZ2U0QXBwOiBDaGF0TWVzc2FnZTRBcHApOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlNEFwcD4ge1xuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdG1lc3NhZ2UvXCIgKyBjaGF0TWVzc2FnZTRBcHAuY2hhdElkO1xuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDaGF0TWVzc2FnZTRBcHA+KHVybCwgY2hhdE1lc3NhZ2U0QXBwLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxuICAgICAgICB9KVxuICBcbiAgICB9XG4gICAgcHJvcHMoY2hhdEZpbHRlclJlcXVlc3Q0QXBwOiBBcnJheTxDaGF0RmlsdGVyUmVxdWVzdDRBcHA+KTogT2JzZXJ2YWJsZTxDaGF0VXNlclJlc3BvbnNlNEFwcFtdPiB7XG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9wcm9wc1wiO1xuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDaGF0VXNlclJlc3BvbnNlNEFwcFtdPih1cmwsIGNoYXRGaWx0ZXJSZXF1ZXN0NEFwcCxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcbiAgICAgICAgfSlcbiAgXG4gICAgfVxuICBcbiAgXG4gICAgcmVtb3ZlVXNlcnNDaGF0KGNoYXRJZDogc3RyaW5nLCBjaGF0VXNlcnNJZD86IHN0cmluZ1tdLCBjaGF0VXNlcnNFeHRlcm5hbElkPzogc3RyaW5nW10pOiBPYnNlcnZhYmxlPENoYXRVc2VyNEFwcFtdPiB7XG4gICAgICBsZXQgcGFyYW1zID0gbmV3IEFycmF5KCk7XG4gICAgICBpZiAoY2hhdFVzZXJzSWQgJiYgY2hhdFVzZXJzSWQubGVuZ3RoID4gMCkge1xuICBcbiAgICAgICAgY2hhdFVzZXJzSWQuZm9yRWFjaChjdWkgPT4ge1xuICAgICAgICAgIHBhcmFtcy5wdXNoKFwiY2hhdFVzZXJJZD1cIiArIGN1aSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGF0VXNlcnNFeHRlcm5hbElkICYmIGNoYXRVc2Vyc0V4dGVybmFsSWQubGVuZ3RoID4gMCkge1xuICAgICAgICBjaGF0VXNlcnNFeHRlcm5hbElkLmZvckVhY2goY3VlaSA9PiB7XG4gICAgICAgICAgcGFyYW1zLnB1c2goXCJjaGF0VXNlckV4dGVybmFsSWQ9XCIgKyBjdWVpKTtcbiAgICAgICAgfSlcbiAgXG4gICAgICB9XG4gIFxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdHVzZXIvXCIgKyBjaGF0SWQgKyBcIj9cIiArIHBhcmFtcy5qb2luKFwiJlwiKTtcbiAgXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxDaGF0VXNlcjRBcHBbXT4odXJsLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxuICAgICAgICB9KVxuICAgIH1cbiAgXG4gICAgcmVtb3ZlVXNlckNoYXQoY2hhdElkOiBzdHJpbmcsIGNoYXRVc2VySWQ/OiBzdHJpbmcsIGNoYXRVc2VyRXh0ZXJuYWxJZD86IHN0cmluZyk6IE9ic2VydmFibGU8Q2hhdFVzZXI0QXBwPiB7XG4gICAgICBsZXQgcGFyYW0gPSBcIlwiO1xuICAgICAgaWYgKGNoYXRVc2VySWQpIHtcbiAgICAgICAgcGFyYW0gPSBcImNoYXRVc2VySWQ9XCIgKyBjaGF0VXNlcklkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW0gPSBcImNoYXRVc2VyRXh0ZXJuYWxJZD1cIiArIGNoYXRVc2VyRXh0ZXJuYWxJZDtcbiAgICAgIH1cbiAgXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0dXNlci9cIiArIGNoYXRJZCArIFwiP1wiICsgcGFyYW07XG4gIFxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8Q2hhdFVzZXI0QXBwPih1cmwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuICBcbiAgICB1cGRhdGVVc2VyQ2hhdChjaGF0SWQ6IHN0cmluZywgY2hhclVzZXI0QXBwVXBkYXRlOiBDaGF0VXNlcjRBcHApOiBPYnNlcnZhYmxlPENoYXRVc2VyNEFwcD4ge1xuICBcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXR1c2VyL1wiICsgY2hhdElkO1xuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PENoYXRVc2VyNEFwcD4odXJsLCBjaGFyVXNlcjRBcHBVcGRhdGUsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuICBcbiAgXG4gICAgY3JlYXRlVXNlckNoYXQoY2hhdElkOiBzdHJpbmcsIGNoYXRVc2VyNEFwcDogQ2hhdFVzZXI0QXBwKTogT2JzZXJ2YWJsZTxDaGF0VXNlcjRBcHA+IHtcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXR1c2VyL1wiICsgY2hhdElkO1xuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDaGF0VXNlcjRBcHA+KHVybCwgY2hhdFVzZXI0QXBwLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxuICAgICAgICB9KVxuICAgIH1cbiAgXG4gICAgY3JlYXRlVXNlcnNDaGF0KGNoYXRJZDogc3RyaW5nLCBjaGF0VXNlcjRBcHA6IENoYXRVc2VyNEFwcFtdKTogT2JzZXJ2YWJsZTxDaGF0VXNlcjRBcHBbXT4ge1xuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdHVzZXIvdXNlcnMvXCIgKyBjaGF0SWQ7XG4gIFxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENoYXRVc2VyNEFwcFtdPih1cmwsIGNoYXRVc2VyNEFwcCxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcbiAgICAgICAgfSlcbiAgICB9XG4gIFxuICBcbiAgICBjcmVhdGVDaGF0KGNoYXQ0YXBwOiBDaGF0NEFwcCk6IE9ic2VydmFibGU8Q2hhdDRBcHA+IHtcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRcIjtcbiAgXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q2hhdDRBcHA+KHVybCwgY2hhdDRhcHAsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGNyZWF0ZVVwZGF0ZUNoYXQoY2hhdDRhcHA6IENoYXQ0QXBwKTogT2JzZXJ2YWJsZTxDaGF0NEFwcD4ge1xuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdFwiO1xuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PENoYXQ0QXBwPih1cmwsIGNoYXQ0YXBwLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxuICAgICAgICB9KVxuICAgIH1cbiAgXG4gIFxuICAgIGdldExhc3RNZXNzYWdlR3JvdXAoY2hhdEV4dGVybmFsSWQ6IHN0cmluZywgZ3JvdXBJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDaGF0VXNlclJlc3BvbnNlNEFwcD4ge1xuICBcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL2xhc3RNZXNzYWdlR3JvdXA/Y2hhdEV4dGVybmFsSWQ9XCIgKyBjaGF0RXh0ZXJuYWxJZCArIFwiJmdyb3VwSWQ9XCIgKyBncm91cElkO1xuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENoYXRVc2VyUmVzcG9uc2U0QXBwPih1cmwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGdldExhc3RNZXNzYWdlKGNoYXRFeHRlcm5hbElkOiBzdHJpbmcsIGNoYXRVc2VyRXh0ZXJuYWxJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDaGF0VXNlclJlc3BvbnNlNEFwcD4ge1xuICBcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL2xhc3RNZXNzYWdlP2NoYXRFeHRlcm5hbElkPVwiICsgY2hhdEV4dGVybmFsSWQgKyBcIiZjaGF0VXNlckV4dGVybmFsSWQ9XCIgKyBjaGF0VXNlckV4dGVybmFsSWQ7XG4gIFxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Q2hhdFVzZXJSZXNwb25zZTRBcHA+KHVybCxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcbiAgICAgICAgfSlcbiAgICB9XG4gICAgY291bnROb3RSZWFkTWVzc2FnZXMoY2hhdFVzZXJFeHRlcm5hbElkOiBzdHJpbmcsIGNoYXRFeHRlcm5hbElkPzogc3RyaW5nLCBncm91cElkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxDaGF0VXNlclJlc3BvbnNlNEFwcD4ge1xuICBcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL2NvdW50Tm90UmVhZE1lc3NhZ2VzP2NoYXRVc2VyRXh0ZXJuYWxJZD1cIiArIGNoYXRVc2VyRXh0ZXJuYWxJZDtcbiAgXG4gICAgICBpZiAoY2hhdEV4dGVybmFsSWQgJiYgY2hhdEV4dGVybmFsSWQubGVuZ3RoID4gMCkge1xuICAgICAgICB1cmwgKz0gXCImY2hhdEV4dGVybmFsSWQ9XCIgKyBjaGF0RXh0ZXJuYWxJZDtcbiAgICAgIH1cbiAgXG4gICAgICBpZiAoZ3JvdXBJZCAmJiBncm91cElkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdXJsICs9IFwiJmdyb3VwSWQ9XCIgKyBncm91cElkO1xuICAgICAgfVxuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENoYXRVc2VyUmVzcG9uc2U0QXBwPih1cmwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuICBcbiAgXG4gICAgZ2V0Q2hhdEJ5RXh0ZXJuYWxJZChleHRlcm5hbElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENoYXQ0QXBwPiB7XG4gIFxuICAgICAgbGV0IHVybCA9IHRoaXMuY2hhdFVybCArIFwiY2hhdD9leHRlcm5hbElkPVwiICsgZXh0ZXJuYWxJZDtcbiAgXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDaGF0NEFwcD4odXJsLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxuICAgICAgICB9KVxuICAgIH1cbiAgICByZWFkTWVzc2FnZShjaGF0TWVzc2FnZUlkOiBzdHJpbmcsIHRvSWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9yZWFkL1wiICsgY2hhdE1lc3NhZ2VJZDtcbiAgXG4gICAgICBpZiAodG9JZCAmJiB0b0lkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdXJsICs9IFwiL1wiICsgdG9JZDtcbiAgICAgIH1cbiAgXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDx2b2lkPih1cmwsIG51bGwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuICAgIG9ubGluZShjaGF0SWQ6IHN0cmluZywgY2hhdFVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9vbmxpbmUvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGNoYXRVc2VySWQ7XG4gIFxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8bnVtYmVyPih1cmwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuICBcbiAgXG4gICAgc2VuZEZpbGUoY2hhdElkOiBzdHJpbmcsIGZyb21JZDogc3RyaW5nLCB0b0lkOiBzdHJpbmcsIGZpbGVUb1VwbG9hZDogRmlsZSk6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2VGaWxlNEFwcD4ge1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3NlbmRGaWxlL1wiICsgY2hhdElkICsgXCIvXCIgKyBmcm9tSWQgKyBcIi9cIiArIHRvSWQ7XG4gIFxuICAgICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlVG9VcGxvYWQpO1xuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLnBvc3Q8Q2hhdE1lc3NhZ2VGaWxlNEFwcD4oZW5kcG9pbnQsIGZvcm1EYXRhLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuZ2V0QmVhcmVyVG9rZW4oKSlcbiAgICAgICAgICB9KTtcbiAgICB9XG4gIFxuICAgIHNlbmRGaWxlR3JvdXAoY2hhdElkOiBzdHJpbmcsIGZyb21JZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcsIGZpbGVUb1VwbG9hZDogRmlsZSk6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2VGaWxlNEFwcD4ge1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3NlbmRGaWxlR3JvdXAvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgZ3JvdXBJZDtcbiAgXG4gICAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGVUb1VwbG9hZCk7XG4gIFxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucG9zdDxDaGF0TWVzc2FnZUZpbGU0QXBwPihlbmRwb2ludCwgZm9ybURhdGEsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxuICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYW5zbGF0ZU1lc3NhZ2UoY2hhdE1lc3NhZ2VJZDogc3RyaW5nLCBsYW5ndWFnZVRhcmdldDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDaGF0NEFwcFRyYW5zbGF0ZT4ge1xuICBcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3RyYW5zbGF0ZS9cIiArIGNoYXRNZXNzYWdlSWQgKyBcIi9cIiArIGxhbmd1YWdlVGFyZ2V0O1xuICBcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENoYXQ0QXBwVHJhbnNsYXRlPih1cmwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgc3RhcnRUeXBpbmcoY2hhdElkOiBzdHJpbmcsZnJvbUlkOiBzdHJpbmcsIHRvSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICBcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3N0YXJ0VHlwaW5nL1wiICsgY2hhdElkICsgXCIvXCIgKyBmcm9tSWQgKyBcIi9cIiArIHRvSWQ7XG4gIFxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8dm9pZD4odXJsLCBudWxsLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5nZXRCZWFyZXJUb2tlbigpKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHN0YXJ0VHlwaW5nR3JvdXAoY2hhdElkOiBzdHJpbmcsZnJvbUlkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICBcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3N0YXJ0VHlwaW5nR3JvdXAvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgZ3JvdXBJZDtcbiAgXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDx2b2lkPih1cmwsIG51bGwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuICAgIHN0b3BUeXBpbmcoY2hhdElkOiBzdHJpbmcsZnJvbUlkOiBzdHJpbmcsIHRvSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICBcbiAgICAgIGxldCB1cmwgPSB0aGlzLmNoYXRVcmwgKyBcImNoYXRtZXNzYWdlL3N0b3BUeXBpbmcvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgdG9JZDtcbiAgXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDx2b2lkPih1cmwsIG51bGwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgc3RvcFR5cGluZ0dyb3VwKGNoYXRJZDogc3RyaW5nLGZyb21JZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgXG4gICAgICBsZXQgdXJsID0gdGhpcy5jaGF0VXJsICsgXCJjaGF0bWVzc2FnZS9zdG9wVHlwaW5nR3JvdXAvXCIgKyBjaGF0SWQgKyBcIi9cIiArIGZyb21JZCArIFwiL1wiICsgZ3JvdXBJZDtcbiAgXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDx2b2lkPih1cmwsIG51bGwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmdldEJlYXJlclRva2VuKCkpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gIFxuICAgIC8qIFRva2VuICovXG4gICAgZ2V0QmVhcmVyVG9rZW4oKTogc3RyaW5nIHtcbiAgXG4gICAgICBsZXQgcmV0ID0gXCJCZWFyZXIgXCIgKyB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImNoYXQ0QXBwU2Vzc2lvblRva2VuXCIpO1xuICBcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICBcbiAgXG4gICAgc2V0VG9rZW5DaGF0NGFwcChjaGF0NEFwcFNlc3Npb25Ub2tlbjogc3RyaW5nKSB7XG4gIFxuICBcbiAgICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwiY2hhdDRBcHBTZXNzaW9uVG9rZW5cIiwgY2hhdDRBcHBTZXNzaW9uVG9rZW4pO1xuICAgIH1cbiAgXG4gIFxuICAgIC8qIENvbm5lY3Rpb24gKi9cbiAgXG4gICAgb25NZXNzYWdlRmlyZWJhc2VSZWNlaXZlZChkYXRhOiBhbnksIGNoYXRDYWxsYmFjazogSUNoYXRDYWxsYmFjaykge1xuICBcbiAgXG4gICAgICAvL2FsZXJ0KFwib25NZXNzYWdlUmVjZWl2ZWQgY29ubmVjdEZpcmViYXNlXCIpO1xuICBcbiAgICAgIGlmIChkYXRhLnR5cGUgPT0gXCJtc2dcIikge1xuICBcbiAgICAgICAgbGV0IGNoYXQ0YXBwTWVzc2FnZSA9IG5ldyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKCk7XG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmNoYXRJZCA9IGRhdGEuY2hhdElkO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0TWVzc2FnZUlkID0gZGF0YS5jaGF0TWVzc2FnZUlkO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5leHRlcm5hbElkID0gZGF0YS5leHRlcm5hbElkO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5mcm9tSWQgPSBkYXRhLmZyb21JZDtcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEudG9JZCA9IGRhdGEudG9JZDtcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZGF0ZUhvdXIgPSBkYXRhLmRhdGVIb3VyO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50eXBlID0gZGF0YS50eXBlO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2Uubm90aWZpY2F0aW9uLmJvZHkgPSBkYXRhLmJvZHk7XG4gIFxuICAgICAgICBpZiAoZGF0YS5maWxlSWQgJiYgZGF0YS5maWxlSWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmZpbGVJZCA9IGRhdGEuZmlsZUlkO1xuICAgICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmZpbGVOYW1lID0gZGF0YS5maWxlTmFtZTtcbiAgICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5maWxlU2l6ZSA9IGRhdGEuZmlsZVNpemU7XG4gICAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZmlsZVR5cGUgPSBkYXRhLmZpbGVUeXBlO1xuICBcbiAgICAgICAgfVxuICBcbiAgICAgICAgbGV0IGRhdFRtcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIFxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gZGF0YSkge1xuICAgICAgICAgIGRhdFRtcC5zZXQoa2V5LCBkYXRhW2tleV0pO1xuICAgICAgICB9XG4gIFxuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5hbGwgPSBkYXRUbXA7XG4gIFxuICAgICAgICBjaGF0Q2FsbGJhY2sub25NZXNzYWdlKGNoYXQ0YXBwTWVzc2FnZSk7XG4gIFxuICAgICAgfSBlbHNlIGlmICgoZGF0YS50eXBlID09IFwib25cIiB8fCBkYXRhLnR5cGUgPT0gXCJvZmZcIikpIHtcbiAgICAgICAgbGV0IGNoYXQ0YXBwTWVzc2FnZSA9IG5ldyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKCk7XG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmNoYXRJZCA9IGRhdGEuY2hhdElkO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0TWVzc2FnZUlkID0gZGF0YS5jaGF0TWVzc2FnZUlkO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5leHRlcm5hbElkID0gZGF0YS5leHRlcm5hbElkO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5mcm9tSWQgPSBkYXRhLmZyb21JZDtcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEudG9JZCA9IGRhdGEudG9JZDtcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZGF0ZUhvdXIgPSBkYXRhLmRhdGVIb3VyO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50eXBlID0gZGF0YS50eXBlO1xuXG4gICAgICAgIGxldCBkYXRUbXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICBkYXRUbXAuc2V0KGtleSwgZGF0YVtrZXldKTtcbiAgICAgICAgfVxuICBcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuYWxsID0gZGF0VG1wO1xuICBcbiAgICAgICAgY2hhdENhbGxiYWNrLm9uT2ZmbGluZShjaGF0NGFwcE1lc3NhZ2UpO1xuXG4gICAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PSBcInJlYWRcIiApIHtcbiAgICAgICAgbGV0IGNoYXQ0YXBwTWVzc2FnZSA9IG5ldyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKCk7XG4gICAgICAgIGNoYXQ0YXBwTWVzc2FnZS5kYXRhLmNoYXRJZCA9IGRhdGEuY2hhdElkO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5jaGF0TWVzc2FnZUlkID0gZGF0YS5jaGF0TWVzc2FnZUlkO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5leHRlcm5hbElkID0gZGF0YS5leHRlcm5hbElkO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS5mcm9tSWQgPSBkYXRhLmZyb21JZDtcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEudG9JZCA9IGRhdGEudG9JZDtcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuZGF0ZUhvdXIgPSBkYXRhLmRhdGVIb3VyO1xuICAgICAgICBjaGF0NGFwcE1lc3NhZ2UuZGF0YS50eXBlID0gZGF0YS50eXBlO1xuXG4gICAgICAgIGxldCBkYXRUbXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICBkYXRUbXAuc2V0KGtleSwgZGF0YVtrZXldKTtcbiAgICAgICAgfVxuICBcbiAgICAgICAgY2hhdDRhcHBNZXNzYWdlLmRhdGEuYWxsID0gZGF0VG1wO1xuICBcbiAgICAgICAgY2hhdENhbGxiYWNrLm9uUmVhZChjaGF0NGFwcE1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgXG4gICAgY29ubmVjdFdlYnNvY2tldChjaGF0Q2FsbGJhY2s6IElDaGF0Q2FsbGJhY2ssIHRva2VuOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICBcbiAgICAgIGxldCBzZWN1cml0eVRva2VuID0gdGhpcy5nZXRCZWFyZXJUb2tlbigpO1xuICBcbiAgICAgIHRoaXMuc29jayA9IG5ldyBTb2NrSlModGhpcy5jaGF0U2VydmVyICsgJy9zdG9tcC9na3otc3RvbXAtZW5kcG9pbnQ/dG9rZW49JyArIHNlY3VyaXR5VG9rZW4pO1xuICAgICAgdGhpcy5zdG9tcENsaWVudCA9IFN0b21wLm92ZXIodGhpcy5zb2NrKTtcbiAgICAgIHRoaXMuc3RvbXBDbGllbnQuZGVidWcgPSBmdW5jdGlvbiAobXNnOiBhbnkpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhtc2cpO1xuICAgICAgfVxuICBcbiAgICAgIHRoaXMuc3RvbXBDbGllbnQuY29ubmVjdCh7fSwgKGZyYW1lOiBhbnkpID0+IHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhmcmFtZSk7XG4gIFxuICAgICAgICB0aGlzLnN0b21wQ2xpZW50LnN1YnNjcmliZSgnL3F1ZXVlLycgKyB0b2tlbiwgKG1zZzogYW55KSA9PiB7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZygnbWVuc2FnZW0nLCBtc2cpO1xuICBcbiAgICAgICAgICBpZiAobXNnLmNvbW1hbmQgPT0gXCJNRVNTQUdFXCIpIHtcbiAgXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKG1zZylcbiAgXG4gICAgICAgICAgICBsZXQgbXNnT2JqID0gSlNPTi5wYXJzZShtc2cuYm9keSk7XG4gIFxuICAgICAgICAgICAgbGV0IGRhdFRtcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIFxuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIG1zZ09iai5kYXRhKSB7XG4gICAgICAgICAgICAgIGRhdFRtcC5zZXQoa2V5LCBtc2dPYmouZGF0YVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgICBtc2dPYmouZGF0YS5hbGwgPSBkYXRUbXA7XG4gIFxuICAgICAgICAgICAgaWYgKG1zZ09iai5kYXRhLnR5cGUgPT0gXCJtc2dcIikge1xuICAgICAgICAgICAgICBjaGF0Q2FsbGJhY2sub25NZXNzYWdlKG1zZ09iaik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChtc2dPYmouZGF0YS50eXBlID09IFwib25cIiB8fCBtc2dPYmouZGF0YS50eXBlID09IFwib2ZmXCIpKSB7XG4gICAgICAgICAgICAgIGNoYXRDYWxsYmFjay5vbk9mZmxpbmUobXNnT2JqKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobXNnT2JqLmRhdGEudHlwZSA9PSBcInJlYWRcIiApIHtcbiAgICAgICAgICAgICAgY2hhdENhbGxiYWNrLm9uUmVhZChtc2dPYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvL2NhbGxiYWNrKG1zZy5ib2R5KTtcbiAgICAgICAgICAgIC8vIGljaGF0Y2FsbGJhY2suZm9yRWFjaCgoaUNoYXQpPT57XG4gICAgICAgICAgICAvLyAgIGlDaGF0Lm9uTWVzc2FnZShKU09OLnBhcnNlKG1zZy5ib2R5KSApO1xuICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgICAobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gY2hlY2sgbWVzc2FnZSBmb3IgZGlzY29ubmVjdFxuICAgICAgICAgIC8vY29uc29sZS5sb2coXCJEaXNjb25uZWN0XCIpO1xuICBcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdFdlYnNvY2tldChjaGF0Q2FsbGJhY2ssIHRva2VuKTtcbiAgICAgICAgICB9LCA1MDApO1xuICBcbiAgICAgICAgfSk7XG4gIFxuICAgIH1cbiAgXG4gICAgZGlzY29ubmVjdCgpIHtcbi8vICAgICAgY29uc29sZS5sb2coXCJkaXNjb25uZWN0XCIpXG4gICAgICB0cnkge1xuICAgICAgICBpZiAodGhpcy5zdG9tcENsaWVudCkge1xuICAgICAgICAgIHRoaXMuc3RvbXBDbGllbnQuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gIFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb252ZXJ0Q2hhdDRBcHBNZXNzYWdlUmVjZWl2ZVRvQ2hhdE1lc3NhZ2U0QXBwKG1zZzogQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZSk6IENoYXRNZXNzYWdlNEFwcHtcbiAgICAgIGxldCBtZXNzYWdlID0gbmV3IENoYXRNZXNzYWdlNEFwcCgpO1xuICAgICAgbWVzc2FnZS5ib2R5ID0gbXNnLm5vdGlmaWNhdGlvbi5ib2R5O1xuICAgICAgbWVzc2FnZS5jaGF0SWQgPSBtc2cuZGF0YS5jaGF0SWQ7XG4gICAgICBtZXNzYWdlLmZyb21JZCA9IG1zZy5kYXRhLmZyb21JZDtcbiAgICAgIG1lc3NhZ2UudG9JZCA9IG1zZy5kYXRhLnRvSWQ7XG4gICAgICBtZXNzYWdlLmRhdGVIb3VySW5jbHVkZWQgPSBtb21lbnQudXRjKG1zZy5kYXRhLmRhdGVIb3VyLCBcIkRELU1NLVlZWVkgaGg6bW06c3NcIikudG9EYXRlKCk7XG4gICAgICBtZXNzYWdlLmlkID0gbXNnLmRhdGEuY2hhdE1lc3NhZ2VJZDtcblxuICAgICAgaWYgKG1zZy5kYXRhLmZpbGVJZCAmJiBtc2cuZGF0YS5maWxlSWQubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgbWVzc2FnZUZpbGUgPSBuZXcgQ2hhdE1lc3NhZ2VGaWxlNEFwcCgpO1xuICAgICAgICBcbiAgICAgICAgbWVzc2FnZUZpbGUuaWQgPSBtc2cuZGF0YS5maWxlSWQ7XG4gICAgICAgIG1lc3NhZ2VGaWxlLm5hbWUgPSBtc2cuZGF0YS5maWxlTmFtZTtcbiAgICAgICAgbWVzc2FnZUZpbGUuc2l6ZSA9IG1zZy5kYXRhLmZpbGVTaXplO1xuICAgICAgICBtZXNzYWdlRmlsZS50eXBlID0gbXNnLmRhdGEuZmlsZVR5cGU7XG5cbiAgICAgICAgbWVzc2FnZS5jaGF0TWVzc2FnZUZpbGUgPSBtZXNzYWdlRmlsZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG5cbiAgICB9XG4gIFxuICB9XG4gIFxuICBcbiAgZXhwb3J0IGNsYXNzIENoYXQ0QXBwIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGNvbmZpZ0lkOiBzdHJpbmc7XG4gICAgZXh0ZXJuYWxJZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBDaGF0U3RhdHVzNEFwcDtcbiAgICB1c2VyczogQXJyYXk8Q2hhdFVzZXI0QXBwPjtcbiAgXG4gIH1cbiAgZXhwb3J0IGNsYXNzIENoYXRVc2VyNEFwcCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY2xpZW50VG9rZW46IHN0cmluZztcbiAgICBwaWN0dXJlUGF0aDogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgZXh0ZXJuYWxJZDogc3RyaW5nO1xuICAgIHN0YXR1czogQ2hhdFVzZXJTdGF0dXM0QXBwO1xuICB9XG4gIGV4cG9ydCBjbGFzcyBDaGF0TWVzc2FnZTRBcHAge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZnJvbUlkOiBzdHJpbmc7XG4gICAgdG9JZDogc3RyaW5nO1xuICAgIGNoYXRJZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgYm9keTogc3RyaW5nO1xuICAgIG1ldGE6IEFycmF5PENoYXRNZXNzYWdlTWV0YTRBcHA+O1xuICAgIGdyb3VwSWQ6IHN0cmluZztcbiAgICByZWFkOiBCb29sZWFuO1xuICAgIGRhdGVIb3VySW5jbHVkZWQ6IERhdGU7XG4gICAgY2hhdE1lc3NhZ2VGaWxlOiBDaGF0TWVzc2FnZUZpbGU0QXBwO1xuICB9XG4gIGV4cG9ydCBjbGFzcyBDaGF0TWVzc2FnZUZpbGU0QXBwIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGZ1bGxQYXRoOiBzdHJpbmc7XG4gIH1cbiAgZXhwb3J0IGNsYXNzIENoYXRNZXNzYWdlTWV0YTRBcHAge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICB9XG4gIGV4cG9ydCBjbGFzcyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlIHtcbiAgICBkYXRhOiBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlRGF0YSA9IG5ldyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlRGF0YSgpO1xuICAgIG5vdGlmaWNhdGlvbjogQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZU5vdGlmaWNhdGlvbiA9IG5ldyBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlTm90aWZpY2F0aW9uKCk7XG4gICAgdG9rZW46IHN0cmluZztcbiAgfVxuICBleHBvcnQgY2xhc3MgQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZURhdGEge1xuICAgIHRvSWQ6IHN0cmluZztcbiAgICBjaGF0SWQ6IHN0cmluZztcbiAgICBkYXRlSG91cjogc3RyaW5nO1xuICAgIGNoYXRNZXNzYWdlSWQ6IHN0cmluZztcbiAgICBleHRlcm5hbElkOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGZyb21JZDogc3RyaW5nO1xuICAgIGZpbGVJZDogc3RyaW5nO1xuICAgIGZpbGVOYW1lOiBzdHJpbmc7XG4gICAgZmlsZVNpemU6IG51bWJlcjtcbiAgICBmaWxlVHlwZTogc3RyaW5nO1xuICAgIGFsbDogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgfVxuICBleHBvcnQgY2xhc3MgQ2hhdDRBcHBNZXNzYWdlUmVjZWl2ZU5vdGlmaWNhdGlvbiB7XG4gICAgYm9keTogc3RyaW5nO1xuICB9XG4gIFxuICBleHBvcnQgY2xhc3MgQ2hhdFVzZXJSZXNwb25zZTRBcHAge1xuICAgIHRvdGFsTWVzc2FnZXM6IG51bWJlcjtcbiAgICBjaGF0OiBDaGF0NEFwcDtcbiAgICBjaGF0TWVzc2FnZTogQ2hhdE1lc3NhZ2U0QXBwO1xuICAgIGNoYXRzOiBDaGF0VXNlclJlc3BvbnNlNEFwcFtdO1xuICB9XG4gIGV4cG9ydCBjbGFzcyBDaGF0RmlsdGVyUmVxdWVzdDRBcHAge1xuICAgIHR5cGU6IENoYXRGaWx0ZXJUeXBlO1xuICAgIGNoYXRFeHRlcm5hbElkOiBzdHJpbmc7XG4gICAgY2hhdFVzZXJFeHRlcm5hbElkOiBzdHJpbmc7XG4gICAgZ3JvdXBJZDogc3RyaW5nO1xuICB9XG4gIGV4cG9ydCBjbGFzcyBDaGF0NEFwcENvbmZpZyB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGVuZHBvaW50OiBzdHJpbmcpIHtcbiAgICAgIFxuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBDaGF0NEFwcFRyYW5zbGF0ZSB7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIHRyYW5zbGF0ZWRUZXh0OiBzdHJpbmc7XG4gICAgb3JpZ2luYWxTb3VyY2VMYW5ndWFnZUNvZGU6IHN0cmluZztcbiAgICBzb3VyY2VMYW5ndWFnZUNvZGU6IHN0cmluZztcbiAgICB0YXJnZXRMYW5ndWFnZUNvZGU6IHN0cmluZztcbiAgICBtZXNzYWdlSWQ6IHN0cmluZztcbiAgfVxuXG5cbiAgXG4gIGV4cG9ydCBlbnVtIENoYXRTdGF0dXM0QXBwIHtcbiAgICBDUkVBVEVEID0gXCJDUkVBVEVEXCIsXG4gICAgQ0xPU0VEID0gXCJDTE9TRURcIlxuICBcbiAgfVxuICBleHBvcnQgZW51bSBDaGF0VXNlclN0YXR1czRBcHAge1xuICAgIFJFTU9WRUQgPSBcIlJFTU9WRURcIlxuICBcbiAgfVxuICBleHBvcnQgZW51bSBDaGF0RmlsdGVyVHlwZSB7XG4gICAgQ09VTlRfTk9UX1JFQUQgPSAxLFxuICAgIExBU1RfTUVTU0FHRSA9IDJcbiAgfVxuICBcbiAgZXhwb3J0IGludGVyZmFjZSBJQ2hhdENhbGxiYWNrIHtcbiAgICBvbk1lc3NhZ2UobXNnOiBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKTogdm9pZDtcbiAgICBvbk9mZmxpbmUobXNnOiBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKTogdm9pZDtcbiAgICBvblJlYWQobXNnOiBDaGF0NEFwcE1lc3NhZ2VSZWNlaXZlKTogdm9pZDtcbiAgfVxuICAiXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of chat4app-client-angular
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/chat4app-client-angular.service';
|
|
5
|
+
export * from './lib/chat4app-client-angular.component';
|
|
6
|
+
export * from './lib/chat4app-client-angular.module';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NoYXQ0YXBwLWNsaWVudC1hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGNoYXQ0YXBwLWNsaWVudC1hbmd1bGFyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdDRhcHAtY2xpZW50LWFuZ3VsYXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0NGFwcC1jbGllbnQtYW5ndWxhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdDRhcHAtY2xpZW50LWFuZ3VsYXIubW9kdWxlJztcbiJdfQ==
|