tas-uell-sdk 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +122 -229
- package/esm2020/lib/components/tas-btn/tas-btn.component.mjs +79 -95
- package/esm2020/lib/components/tas-floating-call/tas-floating-call.component.mjs +74 -24
- package/esm2020/lib/components/tas-videocall/tas-videocall.component.mjs +50 -45
- package/esm2020/lib/components/tas-waiting-room/tas-waiting-room.component.mjs +179 -0
- package/esm2020/lib/config/tas.config.mjs +10 -0
- package/esm2020/lib/interfaces/tas.interfaces.mjs +32 -2
- package/esm2020/lib/services/tas.service.mjs +27 -48
- package/esm2020/lib/tas-uell-sdk.module.mjs +82 -0
- package/esm2020/public-api.mjs +13 -12
- package/esm2020/tas-uell-sdk.mjs +1 -1
- package/fesm2015/tas-uell-sdk.mjs +440 -218
- package/fesm2015/tas-uell-sdk.mjs.map +1 -1
- package/fesm2020/tas-uell-sdk.mjs +437 -216
- package/fesm2020/tas-uell-sdk.mjs.map +1 -1
- package/lib/components/tas-btn/tas-btn.component.d.ts +15 -11
- package/lib/components/tas-floating-call/tas-floating-call.component.d.ts +3 -2
- package/lib/components/tas-videocall/tas-videocall.component.d.ts +4 -3
- package/lib/components/tas-waiting-room/tas-waiting-room.component.d.ts +56 -0
- package/lib/config/tas.config.d.ts +28 -0
- package/lib/interfaces/tas.interfaces.d.ts +41 -6
- package/lib/services/tas.service.d.ts +6 -16
- package/lib/tas-uell-sdk.module.d.ts +46 -0
- package/package.json +34 -23
- package/public-api.d.ts +8 -7
- package/esm2020/lib/tas.config.mjs +0 -14
- package/esm2020/lib/tas.module.mjs +0 -73
- package/lib/tas.config.d.ts +0 -51
- package/lib/tas.module.d.ts +0 -34
|
@@ -1,2 +1,32 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export var TasRoomType;
|
|
2
|
+
(function (TasRoomType) {
|
|
3
|
+
TasRoomType["TAS"] = "TAS";
|
|
4
|
+
TasRoomType["JM"] = "JM";
|
|
5
|
+
TasRoomType["WEBINAR"] = "WEBINAR";
|
|
6
|
+
})(TasRoomType || (TasRoomType = {}));
|
|
7
|
+
export var TasSessionType;
|
|
8
|
+
(function (TasSessionType) {
|
|
9
|
+
TasSessionType["SPONTANEOUS"] = "SPONTANEOUS";
|
|
10
|
+
TasSessionType["SCHEDULED"] = "SCHEDULED";
|
|
11
|
+
})(TasSessionType || (TasSessionType = {}));
|
|
12
|
+
export var TasUserRole;
|
|
13
|
+
(function (TasUserRole) {
|
|
14
|
+
TasUserRole["OWNER"] = "OWNER";
|
|
15
|
+
TasUserRole["USER"] = "USER";
|
|
16
|
+
TasUserRole["MODERATOR"] = "MODERATOR";
|
|
17
|
+
})(TasUserRole || (TasUserRole = {}));
|
|
18
|
+
// Enums for TAS Service state management
|
|
19
|
+
export var CallState;
|
|
20
|
+
(function (CallState) {
|
|
21
|
+
CallState["IDLE"] = "IDLE";
|
|
22
|
+
CallState["CONNECTING"] = "CONNECTING";
|
|
23
|
+
CallState["CONNECTED"] = "CONNECTED";
|
|
24
|
+
CallState["DISCONNECTED"] = "DISCONNECTED";
|
|
25
|
+
CallState["ERROR"] = "ERROR";
|
|
26
|
+
})(CallState || (CallState = {}));
|
|
27
|
+
export var ViewMode;
|
|
28
|
+
(function (ViewMode) {
|
|
29
|
+
ViewMode["FULLSCREEN"] = "FULLSCREEN";
|
|
30
|
+
ViewMode["PIP"] = "PIP";
|
|
31
|
+
})(ViewMode || (ViewMode = {}));
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQSxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3RCLDBCQUFXLENBQUE7SUFDWCx3QkFBUyxDQUFBO0lBQ1Qsa0NBQW1CLENBQUE7QUFDcEIsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN6Qiw2Q0FBMkIsQ0FBQTtJQUMzQix5Q0FBdUIsQ0FBQTtBQUN4QixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3RCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0lBQ2Isc0NBQXVCLENBQUE7QUFDeEIsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCO0FBcUJELHlDQUF5QztBQUN6QyxNQUFNLENBQU4sSUFBWSxTQU1YO0FBTkQsV0FBWSxTQUFTO0lBQ3BCLDBCQUFhLENBQUE7SUFDYixzQ0FBeUIsQ0FBQTtJQUN6QixvQ0FBdUIsQ0FBQTtJQUN2QiwwQ0FBNkIsQ0FBQTtJQUM3Qiw0QkFBZSxDQUFBO0FBQ2hCLENBQUMsRUFOVyxTQUFTLEtBQVQsU0FBUyxRQU1wQjtBQUVELE1BQU0sQ0FBTixJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbkIscUNBQXlCLENBQUE7SUFDekIsdUJBQVcsQ0FBQTtBQUNaLENBQUMsRUFIVyxRQUFRLEtBQVIsUUFBUSxRQUduQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUm9vbVVzZXIge1xuXHR1c2VyRXh0ZXJuYWxJZDogbnVtYmVyO1xuXHRyb2w6IFRhc1VzZXJSb2xlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJvb21SZXF1ZXN0IHtcblx0cm9vbVR5cGU6IFRhc1Jvb21UeXBlO1xuXHR0eXBlOiBUYXNTZXNzaW9uVHlwZTtcblx0dXRjU2NoZWR1bGVkPzogc3RyaW5nO1xuXHRwcm9kdWN0OiBzdHJpbmc7XG5cdHRlbmFudDogc3RyaW5nO1xuXHRhcHBvaW50bWVudElkOiBudW1iZXI7XG5cdHVzZXJzOiBDcmVhdGVSb29tVXNlcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJvb21SZXNwb25zZSB7XG5cdGNvbnRlbnQ6IHtcblx0XHRyb29tVHlwZTogc3RyaW5nIHwgbnVsbDtcblx0XHR0ZW5hbnQ6IHN0cmluZyB8IG51bGw7XG5cdFx0dXNlcl9pZDogc3RyaW5nIHwgbnVsbDtcblx0XHRwcm9kdWN0OiBzdHJpbmcgfCBudWxsO1xuXHRcdHJlY29yZDogYm9vbGVhbiB8IG51bGw7XG5cdFx0c2Vzc2lvbklkOiBzdHJpbmc7XG5cdFx0cm9vbUlkOiBudW1iZXI7XG5cdFx0c3RhdHVzOiBUYXNTZXNzaW9uVHlwZTtcblx0fTtcbn1cblxuZXhwb3J0IGVudW0gVGFzUm9vbVR5cGUge1xuXHRUQVMgPSBcIlRBU1wiLFxuXHRKTSA9IFwiSk1cIixcblx0V0VCSU5BUiA9IFwiV0VCSU5BUlwiXG59XG5cbmV4cG9ydCBlbnVtIFRhc1Nlc3Npb25UeXBlIHtcblx0U1BPTlRBTkVPVVMgPSBcIlNQT05UQU5FT1VTXCIsXG5cdFNDSEVEVUxFRCA9IFwiU0NIRURVTEVEXCJcbn1cblxuZXhwb3J0IGVudW0gVGFzVXNlclJvbGUge1xuXHRPV05FUiA9IFwiT1dORVJcIixcblx0VVNFUiA9IFwiVVNFUlwiLFxuXHRNT0RFUkFUT1IgPSBcIk1PREVSQVRPUlwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFzQ3VycmVudFVzZXIge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGxhc3RuYW1lOiBzdHJpbmc7XG5cdHJvbGU6IFRhc1VzZXJSb2xlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlVG9rZW5SZXF1ZXN0IHtcblx0c2Vzc2lvbklkOiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcblx0bGFzdG5hbWU6IHN0cmluZztcblx0cm9sZVZDOiBUYXNVc2VyUm9sZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVRva2VuUmVzcG9uc2Uge1xuXHRjb250ZW50OiB7XG5cdFx0dG9rZW46IHN0cmluZztcblx0fTtcbn1cblxuLy8gRW51bXMgZm9yIFRBUyBTZXJ2aWNlIHN0YXRlIG1hbmFnZW1lbnRcbmV4cG9ydCBlbnVtIENhbGxTdGF0ZSB7XG5cdElETEUgPSAnSURMRScsXG5cdENPTk5FQ1RJTkcgPSAnQ09OTkVDVElORycsXG5cdENPTk5FQ1RFRCA9ICdDT05ORUNURUQnLFxuXHRESVNDT05ORUNURUQgPSAnRElTQ09OTkVDVEVEJyxcblx0RVJST1IgPSAnRVJST1InXG59XG5cbmV4cG9ydCBlbnVtIFZpZXdNb2RlIHtcblx0RlVMTFNDUkVFTiA9ICdGVUxMU0NSRUVOJyxcblx0UElQID0gJ1BJUCdcbn1cblxuIl19
|
|
@@ -1,26 +1,16 @@
|
|
|
1
|
-
import { Injectable, Inject
|
|
1
|
+
import { Injectable, Inject } from "@angular/core";
|
|
2
2
|
import { BehaviorSubject } from "rxjs";
|
|
3
3
|
import { catchError, map } from "rxjs/operators";
|
|
4
4
|
import * as OT from "@opentok/client";
|
|
5
|
-
import {
|
|
5
|
+
import { CallState, ViewMode, } from "../interfaces/tas.interfaces";
|
|
6
|
+
import { TAS_CONFIG, TAS_HTTP_CLIENT } from "../config/tas.config";
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
CallState["IDLE"] = "IDLE";
|
|
10
|
-
CallState["CONNECTING"] = "CONNECTING";
|
|
11
|
-
CallState["CONNECTED"] = "CONNECTED";
|
|
12
|
-
CallState["DISCONNECTED"] = "DISCONNECTED";
|
|
13
|
-
CallState["ERROR"] = "ERROR";
|
|
14
|
-
})(CallState || (CallState = {}));
|
|
15
|
-
export var ViewMode;
|
|
16
|
-
(function (ViewMode) {
|
|
17
|
-
ViewMode["FULLSCREEN"] = "FULLSCREEN";
|
|
18
|
-
ViewMode["PIP"] = "PIP";
|
|
19
|
-
})(ViewMode || (ViewMode = {}));
|
|
8
|
+
// Re-export enums for backward compatibility
|
|
9
|
+
export { CallState, ViewMode };
|
|
20
10
|
export class TasService {
|
|
21
|
-
constructor(
|
|
22
|
-
this.config = config;
|
|
11
|
+
constructor(httpClient, config) {
|
|
23
12
|
this.httpClient = httpClient;
|
|
13
|
+
this.config = config;
|
|
24
14
|
this.session = null;
|
|
25
15
|
this.publisher = null;
|
|
26
16
|
this.subscribers = [];
|
|
@@ -33,9 +23,6 @@ export class TasService {
|
|
|
33
23
|
// Session info for PiP mode restoration
|
|
34
24
|
this.currentSessionId = null;
|
|
35
25
|
this.currentToken = null;
|
|
36
|
-
if (!this.config || !this.httpClient) {
|
|
37
|
-
console.warn("TasService: Configuration not provided. Make sure to use TasModule.forRoot()");
|
|
38
|
-
}
|
|
39
26
|
}
|
|
40
27
|
// Getters
|
|
41
28
|
get currentSession() {
|
|
@@ -73,7 +60,14 @@ export class TasService {
|
|
|
73
60
|
toggleMute() {
|
|
74
61
|
if (this.publisher) {
|
|
75
62
|
const newMuteState = !this.isMutedSubject.getValue();
|
|
76
|
-
|
|
63
|
+
const shouldEnableAudio = !newMuteState;
|
|
64
|
+
// Use OpenTok's publishAudio
|
|
65
|
+
this.publisher.publishAudio(shouldEnableAudio);
|
|
66
|
+
// Also directly control the MediaStreamTrack as backup
|
|
67
|
+
const audioTrack = this.publisher.getAudioSource?.();
|
|
68
|
+
if (audioTrack) {
|
|
69
|
+
audioTrack.enabled = shouldEnableAudio;
|
|
70
|
+
}
|
|
77
71
|
this.isMutedSubject.next(newMuteState);
|
|
78
72
|
}
|
|
79
73
|
}
|
|
@@ -93,7 +87,7 @@ export class TasService {
|
|
|
93
87
|
this.subscribers = [];
|
|
94
88
|
this.currentSessionId = null;
|
|
95
89
|
this.currentToken = null;
|
|
96
|
-
this.isMutedSubject.next(false);
|
|
90
|
+
this.isMutedSubject.next(false); // Reset mute state
|
|
97
91
|
this.viewModeSubject.next(ViewMode.FULLSCREEN);
|
|
98
92
|
this.callStateSubject.next(CallState.DISCONNECTED);
|
|
99
93
|
}
|
|
@@ -102,21 +96,13 @@ export class TasService {
|
|
|
102
96
|
}
|
|
103
97
|
// API Methods
|
|
104
98
|
createRoom(payload) {
|
|
105
|
-
|
|
106
|
-
throw new Error("TasService not configured. Use TasModule.forRoot()");
|
|
107
|
-
}
|
|
108
|
-
const url = `${this.config.apiBaseUrl}/v2/room`;
|
|
109
|
-
return this.httpClient.post(url, payload).pipe(map((response) => response), catchError((error) => {
|
|
99
|
+
return this.httpClient.post("v2/room", { body: payload, headers: {} }).pipe(map((response) => response), catchError((error) => {
|
|
110
100
|
console.error("TAS Service: createRoom failed", error);
|
|
111
101
|
throw error;
|
|
112
102
|
}));
|
|
113
103
|
}
|
|
114
104
|
generateToken(payload) {
|
|
115
|
-
|
|
116
|
-
throw new Error("TasService not configured. Use TasModule.forRoot()");
|
|
117
|
-
}
|
|
118
|
-
const url = `${this.config.apiBaseUrl}/v2/room/token`;
|
|
119
|
-
return this.httpClient.post(url, payload).pipe(map((response) => response), catchError((error) => {
|
|
105
|
+
return this.httpClient.post("v2/room/token", { body: payload, headers: {} }).pipe(map((response) => response), catchError((error) => {
|
|
120
106
|
console.error("TAS Service: generateToken failed", error);
|
|
121
107
|
throw error;
|
|
122
108
|
}));
|
|
@@ -129,11 +115,6 @@ export class TasService {
|
|
|
129
115
|
this.currentSessionId = sessionId;
|
|
130
116
|
this.currentToken = token;
|
|
131
117
|
return new Promise((resolve, reject) => {
|
|
132
|
-
if (!this.config) {
|
|
133
|
-
this.callStateSubject.next(CallState.ERROR);
|
|
134
|
-
reject(new Error("TasService not configured. Use TasModule.forRoot()"));
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
118
|
if (!OT.checkSystemRequirements()) {
|
|
138
119
|
this.callStateSubject.next(CallState.ERROR);
|
|
139
120
|
reject(new Error("Browser not compatible with TokBox"));
|
|
@@ -242,24 +223,22 @@ export class TasService {
|
|
|
242
223
|
* Moves videos back to fullscreen containers
|
|
243
224
|
*/
|
|
244
225
|
moveVideosToFullscreen() {
|
|
245
|
-
this.moveSubscribersTo(
|
|
246
|
-
this.movePublisherTo(
|
|
226
|
+
this.moveSubscribersTo('subscriber-container');
|
|
227
|
+
this.movePublisherTo('publisher-container');
|
|
247
228
|
}
|
|
248
229
|
}
|
|
249
|
-
TasService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, deps: [{ token:
|
|
230
|
+
TasService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, deps: [{ token: TAS_HTTP_CLIENT }, { token: TAS_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
250
231
|
TasService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, providedIn: "root" });
|
|
251
232
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, decorators: [{
|
|
252
233
|
type: Injectable,
|
|
253
|
-
args: [{
|
|
234
|
+
args: [{
|
|
235
|
+
providedIn: "root",
|
|
236
|
+
}]
|
|
254
237
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
255
|
-
type: Optional
|
|
256
|
-
}, {
|
|
257
238
|
type: Inject,
|
|
258
|
-
args: [
|
|
239
|
+
args: [TAS_HTTP_CLIENT]
|
|
259
240
|
}] }, { type: undefined, decorators: [{
|
|
260
|
-
type: Optional
|
|
261
|
-
}, {
|
|
262
241
|
type: Inject,
|
|
263
|
-
args: [
|
|
242
|
+
args: [TAS_CONFIG]
|
|
264
243
|
}] }]; } });
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Rhcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLGVBQWUsR0FHaEIsTUFBTSxlQUFlLENBQUM7O0FBUXZCLE1BQU0sQ0FBTixJQUFZLFNBTVg7QUFORCxXQUFZLFNBQVM7SUFDbkIsMEJBQWEsQ0FBQTtJQUNiLHNDQUF5QixDQUFBO0lBQ3pCLG9DQUF1QixDQUFBO0lBQ3ZCLDBDQUE2QixDQUFBO0lBQzdCLDRCQUFlLENBQUE7QUFDakIsQ0FBQyxFQU5XLFNBQVMsS0FBVCxTQUFTLFFBTXBCO0FBRUQsTUFBTSxDQUFOLElBQVksUUFHWDtBQUhELFdBQVksUUFBUTtJQUNsQixxQ0FBeUIsQ0FBQTtJQUN6Qix1QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUhXLFFBQVEsS0FBUixRQUFRLFFBR25CO0FBR0QsTUFBTSxPQUFPLFVBQVU7SUFrQnJCLFlBQzBDLE1BQXdCLEVBQ25CLFVBQWdDO1FBRHJDLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBbkJ2RSxZQUFPLEdBQXNCLElBQUksQ0FBQztRQUNsQyxjQUFTLEdBQXdCLElBQUksQ0FBQztRQUN0QyxnQkFBVyxHQUFvQixFQUFFLENBQUM7UUFFbEMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFD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QUVEOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxjQUFzQjtRQUMzQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUUxQiwyQ0FBMkM7UUFDM0MsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDOUQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELE9BQU87U0FDUjtRQUVELHVDQUF1QztRQUN2QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFO1lBQzNCLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsQ0FBQzs7dUdBcFNVLFVBQVUsa0JBbUJDLFVBQVUsNkJBQ1YsZUFBZTsyR0FwQjFCLFVBQVUsY0FERyxNQUFNOzJGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBb0I3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVU7OzBCQUM3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCAqIGFzIE9UIGZyb20gXCJAb3BlbnRvay9jbGllbnRcIjtcbmltcG9ydCB7XG4gIFRBU19DT05GSUcsXG4gIFRBU19IVFRQX0NMSUVOVCxcbiAgVGFzQ29uZmlnLFxuICBUYXNIdHRwQ2xpZW50LFxufSBmcm9tIFwiLi4vdGFzLmNvbmZpZ1wiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlUm9vbVJlcXVlc3QsXG4gIENyZWF0ZVJvb21SZXNwb25zZSxcbiAgR2VuZXJhdGVUb2tlblJlcXVlc3QsXG4gIEdlbmVyYXRlVG9rZW5SZXNwb25zZSxcbn0gZnJvbSBcIi4uL2ludGVyZmFjZXMvdGFzLmludGVyZmFjZXNcIjtcblxuZXhwb3J0IGVudW0gQ2FsbFN0YXRlIHtcbiAgSURMRSA9IFwiSURMRVwiLFxuICBDT05ORUNUSU5HID0gXCJDT05ORUNUSU5HXCIsXG4gIENPTk5FQ1RFRCA9IFwiQ09OTkVDVEVEXCIsXG4gIERJU0NPTk5FQ1RFRCA9IFwiRElTQ09OTkVDVEVEXCIsXG4gIEVSUk9SID0gXCJFUlJPUlwiLFxufVxuXG5leHBvcnQgZW51bSBWaWV3TW9kZSB7XG4gIEZVTExTQ1JFRU4gPSBcIkZVTExTQ1JFRU5cIixcbiAgUElQID0gXCJQSVBcIixcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFRhc1NlcnZpY2Uge1xuICBwcml2YXRlIHNlc3Npb246IE9ULlNlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwdWJsaXNoZXI6IE9ULlB1Ymxpc2hlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN1YnNjcmliZXJzOiBPVC5TdWJzY3JpYmVyW10gPSBbXTtcblxuICBwcml2YXRlIGNhbGxTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhbGxTdGF0ZT4oQ2FsbFN0YXRlLklETEUpO1xuICBwdWJsaWMgY2FsbFN0YXRlJCA9IHRoaXMuY2FsbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHZpZXdNb2RlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld01vZGU+KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuICBwdWJsaWMgdmlld01vZGUkID0gdGhpcy52aWV3TW9kZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBpc011dGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgaXNNdXRlZCQgPSB0aGlzLmlzTXV0ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vIFNlc3Npb24gaW5mbyBmb3IgUGlQIG1vZGUgcmVzdG9yYXRpb25cbiAgcHJpdmF0ZSBjdXJyZW50U2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50VG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEFTX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFRhc0NvbmZpZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUQVNfSFRUUF9DTElFTlQpIHByaXZhdGUgaHR0cENsaWVudDogVGFzSHR0cENsaWVudCB8IG51bGxcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyB8fCAhdGhpcy5odHRwQ2xpZW50KSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiVGFzU2VydmljZTogQ29uZmlndXJhdGlvbiBub3QgcHJvdmlkZWQuIE1ha2Ugc3VyZSB0byB1c2UgVGFzTW9kdWxlLmZvclJvb3QoKVwiXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgcHVibGljIGdldCBjdXJyZW50U2Vzc2lvbigpOiBPVC5TZXNzaW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFB1Ymxpc2hlcigpOiBPVC5QdWJsaXNoZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRTdWJzY3JpYmVycygpOiBPVC5TdWJzY3JpYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmliZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRva2VuO1xuICB9XG5cbiAgcHVibGljIGdldCBpc011dGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzTXV0ZWRTdWJqZWN0LmdldFZhbHVlKCk7XG4gIH1cblxuICAvLyBWaWV3IE1vZGUgTWV0aG9kc1xuICBwdWJsaWMgc2V0Vmlld01vZGUobW9kZTogVmlld01vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KG1vZGUpO1xuICB9XG5cbiAgcHVibGljIGVudGVyUGlwTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KFZpZXdNb2RlLlBJUCk7XG4gIH1cblxuICBwdWJsaWMgZXhpdFBpcE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5GVUxMU0NSRUVOKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1BpcE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlld01vZGVTdWJqZWN0LmdldFZhbHVlKCkgPT09IFZpZXdNb2RlLlBJUDtcbiAgfVxuXG4gIC8vIEF1ZGlvIENvbnRyb2xcbiAgcHVibGljIHRvZ2dsZU11dGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHVibGlzaGVyKSB7XG4gICAgICBjb25zdCBuZXdNdXRlU3RhdGUgPSAhdGhpcy5pc011dGVkU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgdGhpcy5wdWJsaXNoZXIucHVibGlzaEF1ZGlvKCFuZXdNdXRlU3RhdGUpO1xuICAgICAgdGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG5ld011dGVTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE11dGUobXV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wdWJsaXNoZXIpIHtcbiAgICAgIHRoaXMucHVibGlzaGVyLnB1Ymxpc2hBdWRpbyghbXV0ZWQpO1xuICAgICAgdGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG11dGVkKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXNzaW9uIE1hbmFnZW1lbnRcbiAgcHVibGljIGRpc2Nvbm5lY3RTZXNzaW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlc3Npb24pIHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLnNlc3Npb24gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnB1Ymxpc2hlciA9IG51bGw7XG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IFtdO1xuICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgIHRoaXMuaXNNdXRlZFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5GVUxMU0NSRUVOKTtcbiAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRElTQ09OTkVDVEVEKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NhbGxBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBDYWxsU3RhdGUuQ09OTkVDVEVEO1xuICB9XG5cbiAgLy8gQVBJIE1ldGhvZHNcbiAgcHVibGljIGNyZWF0ZVJvb20oXG4gICAgcGF5bG9hZDogQ3JlYXRlUm9vbVJlcXVlc3RcbiAgKTogT2JzZXJ2YWJsZTxDcmVhdGVSb29tUmVzcG9uc2U+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnIHx8ICF0aGlzLmh0dHBDbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhc1NlcnZpY2Ugbm90IGNvbmZpZ3VyZWQuIFVzZSBUYXNNb2R1bGUuZm9yUm9vdCgpXCIpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5hcGlCYXNlVXJsfS92Mi9yb29tYDtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8Q3JlYXRlUm9vbVJlc3BvbnNlPih1cmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZSBhcyBDcmVhdGVSb29tUmVzcG9uc2UpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRBUyBTZXJ2aWNlOiBjcmVhdGVSb29tIGZhaWxlZFwiLCBlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlVG9rZW4oXG4gICAgcGF5bG9hZDogR2VuZXJhdGVUb2tlblJlcXVlc3RcbiAgKTogT2JzZXJ2YWJsZTxHZW5lcmF0ZVRva2VuUmVzcG9uc2U+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnIHx8ICF0aGlzLmh0dHBDbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhc1NlcnZpY2Ugbm90IGNvbmZpZ3VyZWQuIFVzZSBUYXNNb2R1bGUuZm9yUm9vdCgpXCIpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5hcGlCYXNlVXJsfS92Mi9yb29tL3Rva2VuYDtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8R2VuZXJhdGVUb2tlblJlc3BvbnNlPih1cmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlIGFzIEdlbmVyYXRlVG9rZW5SZXNwb25zZSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVEFTIFNlcnZpY2U6IGdlbmVyYXRlVG9rZW4gZmFpbGVkXCIsIGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdG8gYSBUb2tCb3ggdmlkZW8gc2Vzc2lvblxuICAgKi9cbiAgcHVibGljIGNvbm5lY3RTZXNzaW9uKFxuICAgIHNlc3Npb25JZDogc3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgcHVibGlzaGVyRWxlbWVudDogc3RyaW5nLFxuICAgIHN1YnNjcmliZXJFbGVtZW50OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkNPTk5FQ1RJTkcpO1xuICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgICBcbiAgICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIlRhc1NlcnZpY2Ugbm90IGNvbmZpZ3VyZWQuIFVzZSBUYXNNb2R1bGUuZm9yUm9vdCgpXCIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIU9ULmNoZWNrU3lzdGVtUmVxdWlyZW1lbnRzKCkpIHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIkJyb3dzZXIgbm90IGNvbXBhdGlibGUgd2l0aCBUb2tCb3hcIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2Vzc2lvbiA9IE9ULmluaXRTZXNzaW9uKHRoaXMuY29uZmlnLnRva0JveEFwaUtleSwgc2Vzc2lvbklkKTtcblxuICAgICAgLy8gSGFuZGxlIG5ldyBzdHJlYW1zIChyZW1vdGUgcGFydGljaXBhbnRzIGpvaW5pbmcpXG4gICAgICB0aGlzLnNlc3Npb24ub24oXCJzdHJlYW1DcmVhdGVkXCIsIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpYmVyID0gdGhpcy5zZXNzaW9uPy5zdWJzY3JpYmUoXG4gICAgICAgICAgZXZlbnQuc3RyZWFtLFxuICAgICAgICAgIHN1YnNjcmliZXJFbGVtZW50LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluc2VydE1vZGU6IFwiYXBwZW5kXCIsXG4gICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHN1YnNjcmliaW5nIHRvIHN0cmVhbTpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHN1YnNjcmliZXIpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYW5kbGUgc3RyZWFtcyBlbmRpbmcgKHJlbW90ZSBwYXJ0aWNpcGFudHMgbGVhdmluZylcbiAgICAgIHRoaXMuc2Vzc2lvbi5vbihcInN0cmVhbURlc3Ryb3llZFwiLCAoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycyA9IHRoaXMuc3Vic2NyaWJlcnMuZmlsdGVyKFxuICAgICAgICAgIChzdWIpID0+IHN1Yi5zdHJlYW0/LnN0cmVhbUlkICE9PSBldmVudC5zdHJlYW0uc3RyZWFtSWRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYW5kbGUgc2Vzc2lvbiBkaXNjb25uZWN0aW9uXG4gICAgICB0aGlzLnNlc3Npb24ub24oXCJzZXNzaW9uRGlzY29ubmVjdGVkXCIsICgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkRJU0NPTk5FQ1RFRCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gQ29ubmVjdCB0byBzZXNzaW9uXG4gICAgICB0aGlzLnNlc3Npb24uY29ubmVjdCh0b2tlbiwgKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBjb25uZWN0aW5nIHRvIHNlc3Npb246XCIsIGVycm9yKTtcbiAgICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBwdWJsaXNoZXIgKGxvY2FsIHZpZGVvKVxuICAgICAgICB0aGlzLnB1Ymxpc2hlciA9IE9ULmluaXRQdWJsaXNoZXIoXG4gICAgICAgICAgcHVibGlzaGVyRWxlbWVudCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbnNlcnRNb2RlOiBcImFwcGVuZFwiLFxuICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluaXRpYWxpemluZyBwdWJsaXNoZXI6XCIsIGVycik7XG4gICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5FUlJPUik7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFB1Ymxpc2ggdG8gc2Vzc2lvblxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uPy5wdWJsaXNoKHRoaXMucHVibGlzaGVyISwgKHB1YkVycikgPT4ge1xuICAgICAgICAgICAgICBpZiAocHViRXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHB1Ymxpc2hpbmcgc3RyZWFtOlwiLCBwdWJFcnIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5FUlJPUik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHB1YkVycik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkNPTk5FQ1RFRCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFZpZGVvIEVsZW1lbnQgTW92ZW1lbnQgTWV0aG9kc1xuICBwdWJsaWMgbW92ZVB1Ymxpc2hlclRvKG5ld0NvbnRhaW5lcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHVibGlzaGVyKSByZXR1cm47XG5cbiAgICBjb25zdCBwdWJsaXNoZXJFbGVtZW50ID0gdGhpcy5wdWJsaXNoZXIuZWxlbWVudDtcbiAgICBjb25zdCBuZXdDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXdDb250YWluZXJJZCk7XG5cbiAgICBpZiAocHVibGlzaGVyRWxlbWVudCAmJiBuZXdDb250YWluZXIpIHtcbiAgICAgIG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZChwdWJsaXNoZXJFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW92ZVN1YnNjcmliZXJzVG8obmV3Q29udGFpbmVySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld0NvbnRhaW5lcklkKTtcbiAgICBpZiAoIW5ld0NvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBjb25zdCBzdWJzY3JpYmVyRWxlbWVudCA9IHN1YnNjcmliZXIuZWxlbWVudDtcbiAgICAgIGlmIChzdWJzY3JpYmVyRWxlbWVudCkge1xuICAgICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQoc3Vic2NyaWJlckVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBtYWluIHZpZGVvIChzdWJzY3JpYmVyIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHB1Ymxpc2hlcikgdG8gYSBjb250YWluZXIuXG4gICAqIFVzZWQgZm9yIFBpUCBtb2RlIHRvIHNob3cgb25seSBvbmUgdmlkZW8uXG4gICAqL1xuICBwdWJsaWMgbW92ZU1haW5WaWRlb1RvKG5ld0NvbnRhaW5lcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXdDb250YWluZXJJZCk7XG4gICAgaWYgKCFuZXdDb250YWluZXIpIHJldHVybjtcblxuICAgIC8vIFByZWZlciByZW1vdGUgdmlkZW8gKHN1YnNjcmliZXIpIGFzIG1haW5cbiAgICBpZiAodGhpcy5zdWJzY3JpYmVycy5sZW5ndGggPiAwICYmIHRoaXMuc3Vic2NyaWJlcnNbMF0uZWxlbWVudCkge1xuICAgICAgbmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc3Vic2NyaWJlcnNbMF0uZWxlbWVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmFsbCBiYWNrIHRvIGxvY2FsIHZpZGVvIChwdWJsaXNoZXIpXG4gICAgaWYgKHRoaXMucHVibGlzaGVyPy5lbGVtZW50KSB7XG4gICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5wdWJsaXNoZXIuZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHZpZGVvcyBiYWNrIHRvIGZ1bGxzY3JlZW4gY29udGFpbmVyc1xuICAgKi9cbiAgcHVibGljIG1vdmVWaWRlb3NUb0Z1bGxzY3JlZW4oKTogdm9pZCB7XG4gICAgdGhpcy5tb3ZlU3Vic2NyaWJlcnNUbyhcInN1YnNjcmliZXItY29udGFpbmVyXCIpO1xuICAgIHRoaXMubW92ZVB1Ymxpc2hlclRvKFwicHVibGlzaGVyLWNvbnRhaW5lclwiKTtcbiAgfVxufVxuIl19
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9zZXJ2aWNlcy90YXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBS04sU0FBUyxFQUNULFFBQVEsR0FDUixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUE0QixNQUFNLHNCQUFzQixDQUFDOztBQUU3Riw2Q0FBNkM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUsvQixNQUFNLE9BQU8sVUFBVTtJQWtCdEIsWUFDa0MsVUFBeUIsRUFDOUIsTUFBaUI7UUFEWixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFuQnRDLFlBQU8sR0FBc0IsSUFBSSxDQUFDO1FBQ2xDLGNBQVMsR0FBd0IsSUFBSSxDQUFDO1FBQ3RDLGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztRQUVsQyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBWSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsZUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVqRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFXLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RSxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVB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QUMsc0JBQXNCLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDN0MsQ0FBQzs7dUdBdFJXLFVBQVUsa0JBbUJiLGVBQWUsYUFDZixVQUFVOzJHQXBCUCxVQUFVLGNBRlYsTUFBTTsyRkFFTixVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBb0JFLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgKiBhcyBPVCBmcm9tIFwiQG9wZW50b2svY2xpZW50XCI7XG5pbXBvcnQge1xuXHRDcmVhdGVSb29tUmVxdWVzdCxcblx0Q3JlYXRlUm9vbVJlc3BvbnNlLFxuXHRHZW5lcmF0ZVRva2VuUmVxdWVzdCxcblx0R2VuZXJhdGVUb2tlblJlc3BvbnNlLFxuXHRDYWxsU3RhdGUsXG5cdFZpZXdNb2RlLFxufSBmcm9tIFwiLi4vaW50ZXJmYWNlcy90YXMuaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgVEFTX0NPTkZJRywgVEFTX0hUVFBfQ0xJRU5ULCBUYXNDb25maWcsIFRhc0h0dHBDbGllbnQgfSBmcm9tIFwiLi4vY29uZmlnL3Rhcy5jb25maWdcIjtcblxuLy8gUmUtZXhwb3J0IGVudW1zIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQgeyBDYWxsU3RhdGUsIFZpZXdNb2RlIH07XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFRhc1NlcnZpY2Uge1xuXHRwcml2YXRlIHNlc3Npb246IE9ULlNlc3Npb24gfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBwdWJsaXNoZXI6IE9ULlB1Ymxpc2hlciB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIHN1YnNjcmliZXJzOiBPVC5TdWJzY3JpYmVyW10gPSBbXTtcblxuXHRwcml2YXRlIGNhbGxTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhbGxTdGF0ZT4oQ2FsbFN0YXRlLklETEUpO1xuXHRwdWJsaWMgY2FsbFN0YXRlJCA9IHRoaXMuY2FsbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHRwcml2YXRlIHZpZXdNb2RlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld01vZGU+KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuXHRwdWJsaWMgdmlld01vZGUkID0gdGhpcy52aWV3TW9kZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cblx0cHJpdmF0ZSBpc011dGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXHRwdWJsaWMgaXNNdXRlZCQgPSB0aGlzLmlzTXV0ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8vIFNlc3Npb24gaW5mbyBmb3IgUGlQIG1vZGUgcmVzdG9yYXRpb25cblx0cHJpdmF0ZSBjdXJyZW50U2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBjdXJyZW50VG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBJbmplY3QoVEFTX0hUVFBfQ0xJRU5UKSBwcml2YXRlIGh0dHBDbGllbnQ6IFRhc0h0dHBDbGllbnQsXG5cdFx0QEluamVjdChUQVNfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVGFzQ29uZmlnXG5cdCkge31cblxuXHQvLyBHZXR0ZXJzXG5cdHB1YmxpYyBnZXQgY3VycmVudFNlc3Npb24oKTogT1QuU2Vzc2lvbiB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLnNlc3Npb247XG5cdH1cblxuXHRwdWJsaWMgZ2V0IGN1cnJlbnRQdWJsaXNoZXIoKTogT1QuUHVibGlzaGVyIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMucHVibGlzaGVyO1xuXHR9XG5cblx0cHVibGljIGdldCBjdXJyZW50U3Vic2NyaWJlcnMoKTogT1QuU3Vic2NyaWJlcltdIHtcblx0XHRyZXR1cm4gdGhpcy5zdWJzY3JpYmVycztcblx0fVxuXG5cdHB1YmxpYyBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmN1cnJlbnRTZXNzaW9uSWQ7XG5cdH1cblxuXHRwdWJsaWMgZ2V0IHRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmN1cnJlbnRUb2tlbjtcblx0fVxuXG5cdHB1YmxpYyBnZXQgaXNNdXRlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pc011dGVkU3ViamVjdC5nZXRWYWx1ZSgpO1xuXHR9XG5cblx0Ly8gVmlldyBNb2RlIE1ldGhvZHNcblx0cHVibGljIHNldFZpZXdNb2RlKG1vZGU6IFZpZXdNb2RlKTogdm9pZCB7XG5cdFx0dGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChtb2RlKTtcblx0fVxuXG5cdHB1YmxpYyBlbnRlclBpcE1vZGUoKTogdm9pZCB7XG5cdFx0dGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5QSVApO1xuXHR9XG5cblx0cHVibGljIGV4aXRQaXBNb2RlKCk6IHZvaWQge1xuXHRcdHRoaXMudmlld01vZGVTdWJqZWN0Lm5leHQoVmlld01vZGUuRlVMTFNDUkVFTik7XG5cdH1cblxuXHRwdWJsaWMgaXNQaXBNb2RlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnZpZXdNb2RlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBWaWV3TW9kZS5QSVA7XG5cdH1cblxuXHQvLyBBdWRpbyBDb250cm9sXG5cdHB1YmxpYyB0b2dnbGVNdXRlKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnB1Ymxpc2hlcikge1xuXHRcdFx0Y29uc3QgbmV3TXV0ZVN0YXRlID0gIXRoaXMuaXNNdXRlZFN1YmplY3QuZ2V0VmFsdWUoKTtcblx0XHRcdGNvbnN0IHNob3VsZEVuYWJsZUF1ZGlvID0gIW5ld011dGVTdGF0ZTtcblx0XHRcdFxuXHRcdFx0Ly8gVXNlIE9wZW5Ub2sncyBwdWJsaXNoQXVkaW9cblx0XHRcdHRoaXMucHVibGlzaGVyLnB1Ymxpc2hBdWRpbyhzaG91bGRFbmFibGVBdWRpbyk7XG5cdFx0XHRcblx0XHRcdC8vIEFsc28gZGlyZWN0bHkgY29udHJvbCB0aGUgTWVkaWFTdHJlYW1UcmFjayBhcyBiYWNrdXBcblx0XHRcdGNvbnN0IGF1ZGlvVHJhY2sgPSB0aGlzLnB1Ymxpc2hlci5nZXRBdWRpb1NvdXJjZT8uKCk7XG5cdFx0XHRpZiAoYXVkaW9UcmFjaykge1xuXHRcdFx0XHRhdWRpb1RyYWNrLmVuYWJsZWQgPSBzaG91bGRFbmFibGVBdWRpbztcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0dGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG5ld011dGVTdGF0ZSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldE11dGUobXV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5wdWJsaXNoZXIpIHtcblx0XHRcdHRoaXMucHVibGlzaGVyLnB1Ymxpc2hBdWRpbyghbXV0ZWQpO1xuXHRcdFx0dGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG11dGVkKTtcblx0XHR9XG5cdH1cblxuXHQvLyBTZXNzaW9uIE1hbmFnZW1lbnRcblx0cHVibGljIGRpc2Nvbm5lY3RTZXNzaW9uKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnNlc3Npb24pIHtcblx0XHRcdHRoaXMuc2Vzc2lvbi5kaXNjb25uZWN0KCk7XG5cdFx0XHR0aGlzLnNlc3Npb24gPSBudWxsO1xuXHRcdH1cblx0XHR0aGlzLnB1Ymxpc2hlciA9IG51bGw7XG5cdFx0dGhpcy5zdWJzY3JpYmVycyA9IFtdO1xuXHRcdHRoaXMuY3VycmVudFNlc3Npb25JZCA9IG51bGw7XG5cdFx0dGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuXHRcdHRoaXMuaXNNdXRlZFN1YmplY3QubmV4dChmYWxzZSk7IC8vIFJlc2V0IG11dGUgc3RhdGVcblx0XHR0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuXHRcdHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5ESVNDT05ORUNURUQpO1xuXHR9XG5cblx0cHVibGljIGlzQ2FsbEFjdGl2ZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5jYWxsU3RhdGVTdWJqZWN0LmdldFZhbHVlKCkgPT09IENhbGxTdGF0ZS5DT05ORUNURUQ7XG5cdH1cblxuXHQvLyBBUEkgTWV0aG9kc1xuXHRwdWJsaWMgY3JlYXRlUm9vbShwYXlsb2FkOiBDcmVhdGVSb29tUmVxdWVzdCk6IE9ic2VydmFibGU8Q3JlYXRlUm9vbVJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PENyZWF0ZVJvb21SZXNwb25zZT4oXCJ2Mi9yb29tXCIsIHsgYm9keTogcGF5bG9hZCwgaGVhZGVyczoge30gfSkucGlwZShcblx0XHRcdG1hcCgocmVzcG9uc2UpID0+IHJlc3BvbnNlIGFzIENyZWF0ZVJvb21SZXNwb25zZSksXG5cdFx0XHRjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwiVEFTIFNlcnZpY2U6IGNyZWF0ZVJvb20gZmFpbGVkXCIsIGVycm9yKTtcblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHRwdWJsaWMgZ2VuZXJhdGVUb2tlbihwYXlsb2FkOiBHZW5lcmF0ZVRva2VuUmVxdWVzdCk6IE9ic2VydmFibGU8R2VuZXJhdGVUb2tlblJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEdlbmVyYXRlVG9rZW5SZXNwb25zZT4oXCJ2Mi9yb29tL3Rva2VuXCIsIHsgYm9keTogcGF5bG9hZCwgaGVhZGVyczoge30gfSkucGlwZShcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UgYXMgR2VuZXJhdGVUb2tlblJlc3BvbnNlKSxcblx0XHRcdGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJUQVMgU2VydmljZTogZ2VuZXJhdGVUb2tlbiBmYWlsZWRcIiwgZXJyb3IpO1xuXHRcdFx0XHR0aHJvdyBlcnJvcjtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25uZWN0cyB0byBhIFRva0JveCB2aWRlbyBzZXNzaW9uXG5cdCAqL1xuXHRwdWJsaWMgY29ubmVjdFNlc3Npb24oXG5cdFx0c2Vzc2lvbklkOiBzdHJpbmcsXG5cdFx0dG9rZW46IHN0cmluZyxcblx0XHRwdWJsaXNoZXJFbGVtZW50OiBzdHJpbmcsXG5cdFx0c3Vic2NyaWJlckVsZW1lbnQ6IHN0cmluZ1xuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuQ09OTkVDVElORyk7XG5cdFx0dGhpcy5jdXJyZW50U2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuXHRcdHRoaXMuY3VycmVudFRva2VuID0gdG9rZW47XG5cdFx0XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGlmICghT1QuY2hlY2tTeXN0ZW1SZXF1aXJlbWVudHMoKSkge1xuXHRcdFx0XHR0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuXHRcdFx0XHRyZWplY3QobmV3IEVycm9yKFwiQnJvd3NlciBub3QgY29tcGF0aWJsZSB3aXRoIFRva0JveFwiKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5zZXNzaW9uID0gT1QuaW5pdFNlc3Npb24odGhpcy5jb25maWcudG9rQm94QXBpS2V5LCBzZXNzaW9uSWQpO1xuXG5cdFx0XHQvLyBIYW5kbGUgbmV3IHN0cmVhbXMgKHJlbW90ZSBwYXJ0aWNpcGFudHMgam9pbmluZylcblx0XHRcdHRoaXMuc2Vzc2lvbi5vbihcInN0cmVhbUNyZWF0ZWRcIiwgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN1YnNjcmliZXIgPSB0aGlzLnNlc3Npb24/LnN1YnNjcmliZShcblx0XHRcdFx0XHRldmVudC5zdHJlYW0sXG5cdFx0XHRcdFx0c3Vic2NyaWJlckVsZW1lbnQsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5zZXJ0TW9kZTogXCJhcHBlbmRcIixcblx0XHRcdFx0XHRcdHdpZHRoOiBcIjEwMCVcIixcblx0XHRcdFx0XHRcdGhlaWdodDogXCIxMDAlXCIsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQoZXJyb3IpID0+IHtcblx0XHRcdFx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwiRXJyb3Igc3Vic2NyaWJpbmcgdG8gc3RyZWFtOlwiLCBlcnJvcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoc3Vic2NyaWJlcikge1xuXHRcdFx0XHRcdHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdC8vIEhhbmRsZSBzdHJlYW1zIGVuZGluZyAocmVtb3RlIHBhcnRpY2lwYW50cyBsZWF2aW5nKVxuXHRcdFx0dGhpcy5zZXNzaW9uLm9uKFwic3RyZWFtRGVzdHJveWVkXCIsIChldmVudCkgPT4ge1xuXHRcdFx0XHR0aGlzLnN1YnNjcmliZXJzID0gdGhpcy5zdWJzY3JpYmVycy5maWx0ZXIoXG5cdFx0XHRcdFx0KHN1YikgPT4gc3ViLnN0cmVhbT8uc3RyZWFtSWQgIT09IGV2ZW50LnN0cmVhbS5zdHJlYW1JZFxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cblx0XHRcdC8vIEhhbmRsZSBzZXNzaW9uIGRpc2Nvbm5lY3Rpb25cblx0XHRcdHRoaXMuc2Vzc2lvbi5vbihcInNlc3Npb25EaXNjb25uZWN0ZWRcIiwgKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRElTQ09OTkVDVEVEKTtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBDb25uZWN0IHRvIHNlc3Npb25cblx0XHRcdHRoaXMuc2Vzc2lvbi5jb25uZWN0KHRva2VuLCAoZXJyb3IpID0+IHtcblx0XHRcdFx0aWYgKGVycm9yKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIkVycm9yIGNvbm5lY3RpbmcgdG8gc2Vzc2lvbjpcIiwgZXJyb3IpO1xuXHRcdFx0XHRcdHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5FUlJPUik7XG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJbml0aWFsaXplIHB1Ymxpc2hlciAobG9jYWwgdmlkZW8pXG5cdFx0XHRcdHRoaXMucHVibGlzaGVyID0gT1QuaW5pdFB1Ymxpc2hlcihcblx0XHRcdFx0XHRwdWJsaXNoZXJFbGVtZW50LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluc2VydE1vZGU6IFwiYXBwZW5kXCIsXG5cdFx0XHRcdFx0XHR3aWR0aDogXCIxMDAlXCIsXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IFwiMTAwJVwiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0KGVycikgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGVycikge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwiRXJyb3IgaW5pdGlhbGl6aW5nIHB1Ymxpc2hlcjpcIiwgZXJyKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcblx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gUHVibGlzaCB0byBzZXNzaW9uXG5cdFx0XHRcdFx0XHR0aGlzLnNlc3Npb24/LnB1Ymxpc2godGhpcy5wdWJsaXNoZXIsIChwdWJFcnIpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKHB1YkVycikge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwdWJsaXNoaW5nIHN0cmVhbTpcIiwgcHViRXJyKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuXHRcdFx0XHRcdFx0XHRcdHJlamVjdChwdWJFcnIpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5DT05ORUNURUQpO1xuXHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvLyBWaWRlbyBFbGVtZW50IE1vdmVtZW50IE1ldGhvZHNcblx0cHVibGljIG1vdmVQdWJsaXNoZXJUbyhuZXdDb250YWluZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLnB1Ymxpc2hlcikgcmV0dXJuO1xuXHRcdFxuXHRcdGNvbnN0IHB1Ymxpc2hlckVsZW1lbnQgPSB0aGlzLnB1Ymxpc2hlci5lbGVtZW50O1xuXHRcdGNvbnN0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld0NvbnRhaW5lcklkKTtcblx0XHRcblx0XHRpZiAocHVibGlzaGVyRWxlbWVudCAmJiBuZXdDb250YWluZXIpIHtcblx0XHRcdG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZChwdWJsaXNoZXJFbGVtZW50KTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgbW92ZVN1YnNjcmliZXJzVG8obmV3Q29udGFpbmVySWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld0NvbnRhaW5lcklkKTtcblx0XHRpZiAoIW5ld0NvbnRhaW5lcikgcmV0dXJuO1xuXHRcdFxuXHRcdHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaCgoc3Vic2NyaWJlcikgPT4ge1xuXHRcdFx0Y29uc3Qgc3Vic2NyaWJlckVsZW1lbnQgPSBzdWJzY3JpYmVyLmVsZW1lbnQ7XG5cdFx0XHRpZiAoc3Vic2NyaWJlckVsZW1lbnQpIHtcblx0XHRcdFx0bmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHN1YnNjcmliZXJFbGVtZW50KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNb3ZlcyB0aGUgbWFpbiB2aWRlbyAoc3Vic2NyaWJlciBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBwdWJsaXNoZXIpIHRvIGEgY29udGFpbmVyLlxuXHQgKiBVc2VkIGZvciBQaVAgbW9kZSB0byBzaG93IG9ubHkgb25lIHZpZGVvLlxuXHQgKi9cblx0cHVibGljIG1vdmVNYWluVmlkZW9UbyhuZXdDb250YWluZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmV3Q29udGFpbmVySWQpO1xuXHRcdGlmICghbmV3Q29udGFpbmVyKSByZXR1cm47XG5cblx0XHQvLyBQcmVmZXIgcmVtb3RlIHZpZGVvIChzdWJzY3JpYmVyKSBhcyBtYWluXG5cdFx0aWYgKHRoaXMuc3Vic2NyaWJlcnMubGVuZ3RoID4gMCAmJiB0aGlzLnN1YnNjcmliZXJzWzBdLmVsZW1lbnQpIHtcblx0XHRcdG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnN1YnNjcmliZXJzWzBdLmVsZW1lbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEZhbGwgYmFjayB0byBsb2NhbCB2aWRlbyAocHVibGlzaGVyKVxuXHRcdGlmICh0aGlzLnB1Ymxpc2hlcj8uZWxlbWVudCkge1xuXHRcdFx0bmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMucHVibGlzaGVyLmVsZW1lbnQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNb3ZlcyB2aWRlb3MgYmFjayB0byBmdWxsc2NyZWVuIGNvbnRhaW5lcnNcblx0ICovXG5cdHB1YmxpYyBtb3ZlVmlkZW9zVG9GdWxsc2NyZWVuKCk6IHZvaWQge1xuXHRcdHRoaXMubW92ZVN1YnNjcmliZXJzVG8oJ3N1YnNjcmliZXItY29udGFpbmVyJyk7XG5cdFx0dGhpcy5tb3ZlUHVibGlzaGVyVG8oJ3B1Ymxpc2hlci1jb250YWluZXInKTtcblx0fVxufVxuXG4iXX0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { TasButtonComponent } from './components/tas-btn/tas-btn.component';
|
|
4
|
+
import { TasVideocallComponent } from './components/tas-videocall/tas-videocall.component';
|
|
5
|
+
import { TasFloatingCallComponent } from './components/tas-floating-call/tas-floating-call.component';
|
|
6
|
+
import { TasWaitingRoomComponent } from './components/tas-waiting-room/tas-waiting-room.component';
|
|
7
|
+
import { TasService } from './services/tas.service';
|
|
8
|
+
import { TAS_CONFIG, TAS_HTTP_CLIENT } from './config/tas.config';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class TasUellSdkModule {
|
|
11
|
+
/**
|
|
12
|
+
* Use forRoot() to configure the TAS SDK module with required dependencies.
|
|
13
|
+
* This should only be called once in your root AppModule.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { TasUellSdkModule, TasHttpClient } from 'tas-uell-sdk';
|
|
18
|
+
*
|
|
19
|
+
* // Create an adapter that implements TasHttpClient
|
|
20
|
+
* @Injectable({ providedIn: 'root' })
|
|
21
|
+
* export class MyHttpAdapter implements TasHttpClient {
|
|
22
|
+
* constructor(private http: HttpClient) {}
|
|
23
|
+
* post<T>(url: string, options: { body: any; headers?: Record<string, string> }): Observable<T> {
|
|
24
|
+
* return this.http.post<T>(url, options.body, { headers: options.headers });
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* // In your AppModule
|
|
29
|
+
* @NgModule({
|
|
30
|
+
* imports: [
|
|
31
|
+
* TasUellSdkModule.forRoot({
|
|
32
|
+
* config: { tokBoxApiKey: 'YOUR_TOKBOX_API_KEY' },
|
|
33
|
+
* httpClient: MyHttpAdapter
|
|
34
|
+
* })
|
|
35
|
+
* ]
|
|
36
|
+
* })
|
|
37
|
+
* export class AppModule { }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
static forRoot(options) {
|
|
41
|
+
return {
|
|
42
|
+
ngModule: TasUellSdkModule,
|
|
43
|
+
providers: [
|
|
44
|
+
{ provide: TAS_CONFIG, useValue: options.config },
|
|
45
|
+
{ provide: TAS_HTTP_CLIENT, useClass: options.httpClient },
|
|
46
|
+
TasService
|
|
47
|
+
]
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
TasUellSdkModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasUellSdkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
52
|
+
TasUellSdkModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasUellSdkModule, declarations: [TasButtonComponent,
|
|
53
|
+
TasVideocallComponent,
|
|
54
|
+
TasFloatingCallComponent,
|
|
55
|
+
TasWaitingRoomComponent], imports: [CommonModule], exports: [TasButtonComponent,
|
|
56
|
+
TasVideocallComponent,
|
|
57
|
+
TasFloatingCallComponent,
|
|
58
|
+
TasWaitingRoomComponent] });
|
|
59
|
+
TasUellSdkModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasUellSdkModule, imports: [[
|
|
60
|
+
CommonModule,
|
|
61
|
+
]] });
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasUellSdkModule, decorators: [{
|
|
63
|
+
type: NgModule,
|
|
64
|
+
args: [{
|
|
65
|
+
declarations: [
|
|
66
|
+
TasButtonComponent,
|
|
67
|
+
TasVideocallComponent,
|
|
68
|
+
TasFloatingCallComponent,
|
|
69
|
+
TasWaitingRoomComponent
|
|
70
|
+
],
|
|
71
|
+
imports: [
|
|
72
|
+
CommonModule,
|
|
73
|
+
],
|
|
74
|
+
exports: [
|
|
75
|
+
TasButtonComponent,
|
|
76
|
+
TasVideocallComponent,
|
|
77
|
+
TasFloatingCallComponent,
|
|
78
|
+
TasWaitingRoomComponent
|
|
79
|
+
]
|
|
80
|
+
}]
|
|
81
|
+
}] });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXVlbGwtc2RrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvbGliL3Rhcy11ZWxsLXNkay5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBNEIsTUFBTSxxQkFBcUIsQ0FBQzs7QUFtQjVGLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E0Qkc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BR2Q7UUFDQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNqRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQzFELFVBQVU7YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDOzs2R0ExQ1UsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBZnpCLGtCQUFrQjtRQUNsQixxQkFBcUI7UUFDckIsd0JBQXdCO1FBQ3hCLHVCQUF1QixhQUd2QixZQUFZLGFBR1osa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQix3QkFBd0I7UUFDeEIsdUJBQXVCOzhHQUdkLGdCQUFnQixZQVZsQjtZQUNQLFlBQVk7U0FDYjsyRkFRVSxnQkFBZ0I7a0JBakI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7cUJBQ3hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUYXNCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLWJ0bi90YXMtYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNWaWRlb2NhbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNGbG9hdGluZ0NhbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLWZsb2F0aW5nLWNhbGwvdGFzLWZsb2F0aW5nLWNhbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc1dhaXRpbmdSb29tQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rhcy13YWl0aW5nLXJvb20vdGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVEFTX0NPTkZJRywgVEFTX0hUVFBfQ0xJRU5ULCBUYXNDb25maWcsIFRhc0h0dHBDbGllbnQgfSBmcm9tICcuL2NvbmZpZy90YXMuY29uZmlnJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVGFzQnV0dG9uQ29tcG9uZW50LFxuICAgIFRhc1ZpZGVvY2FsbENvbXBvbmVudCxcbiAgICBUYXNGbG9hdGluZ0NhbGxDb21wb25lbnQsXG4gICAgVGFzV2FpdGluZ1Jvb21Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFRhc0J1dHRvbkNvbXBvbmVudCxcbiAgICBUYXNWaWRlb2NhbGxDb21wb25lbnQsXG4gICAgVGFzRmxvYXRpbmdDYWxsQ29tcG9uZW50LFxuICAgIFRhc1dhaXRpbmdSb29tQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFzVWVsbFNka01vZHVsZSB7XG4gIC8qKlxuICAgKiBVc2UgZm9yUm9vdCgpIHRvIGNvbmZpZ3VyZSB0aGUgVEFTIFNESyBtb2R1bGUgd2l0aCByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UgaW4geW91ciByb290IEFwcE1vZHVsZS5cbiAgICogXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW1wb3J0IHsgVGFzVWVsbFNka01vZHVsZSwgVGFzSHR0cENsaWVudCB9IGZyb20gJ3Rhcy11ZWxsLXNkayc7XG4gICAqIFxuICAgKiAvLyBDcmVhdGUgYW4gYWRhcHRlciB0aGF0IGltcGxlbWVudHMgVGFzSHR0cENsaWVudFxuICAgKiBASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuICAgKiBleHBvcnQgY2xhc3MgTXlIdHRwQWRhcHRlciBpbXBsZW1lbnRzIFRhc0h0dHBDbGllbnQge1xuICAgKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cbiAgICogICBwb3N0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zOiB7IGJvZHk6IGFueTsgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfSk6IE9ic2VydmFibGU8VD4ge1xuICAgKiAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHVybCwgb3B0aW9ucy5ib2R5LCB7IGhlYWRlcnM6IG9wdGlvbnMuaGVhZGVycyB9KTtcbiAgICogICB9XG4gICAqIH1cbiAgICogXG4gICAqIC8vIEluIHlvdXIgQXBwTW9kdWxlXG4gICAqIEBOZ01vZHVsZSh7XG4gICAqICAgaW1wb3J0czogW1xuICAgKiAgICAgVGFzVWVsbFNka01vZHVsZS5mb3JSb290KHtcbiAgICogICAgICAgY29uZmlnOiB7IHRva0JveEFwaUtleTogJ1lPVVJfVE9LQk9YX0FQSV9LRVknIH0sXG4gICAqICAgICAgIGh0dHBDbGllbnQ6IE15SHR0cEFkYXB0ZXJcbiAgICogICAgIH0pXG4gICAqICAgXVxuICAgKiB9KVxuICAgKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHsgfVxuICAgKiBgYGBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM6IHtcbiAgICBjb25maWc6IFRhc0NvbmZpZztcbiAgICBodHRwQ2xpZW50OiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUYXNIdHRwQ2xpZW50O1xuICB9KTogTW9kdWxlV2l0aFByb3ZpZGVyczxUYXNVZWxsU2RrTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBUYXNVZWxsU2RrTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogVEFTX0NPTkZJRywgdXNlVmFsdWU6IG9wdGlvbnMuY29uZmlnIH0sXG4gICAgICAgIHsgcHJvdmlkZTogVEFTX0hUVFBfQ0xJRU5ULCB1c2VDbGFzczogb3B0aW9ucy5odHRwQ2xpZW50IH0sXG4gICAgICAgIFRhc1NlcnZpY2VcbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG5cbiJdfQ==
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of tas-uell-sdk
|
|
3
3
|
*/
|
|
4
|
-
//
|
|
5
|
-
export * from
|
|
6
|
-
// Configuration
|
|
7
|
-
export * from "./lib/tas.config";
|
|
8
|
-
// Services
|
|
9
|
-
export * from "./lib/services/tas.service";
|
|
10
|
-
// Components
|
|
11
|
-
export * from "./lib/components/tas-btn/tas-btn.component";
|
|
12
|
-
export * from "./lib/components/tas-videocall/tas-videocall.component";
|
|
13
|
-
export * from "./lib/components/tas-floating-call/tas-floating-call.component";
|
|
4
|
+
// Configuration and tokens
|
|
5
|
+
export * from './lib/config/tas.config';
|
|
14
6
|
// Interfaces
|
|
15
|
-
export * from
|
|
16
|
-
|
|
7
|
+
export * from './lib/interfaces/tas.interfaces';
|
|
8
|
+
// Service
|
|
9
|
+
export * from './lib/services/tas.service';
|
|
10
|
+
// Components
|
|
11
|
+
export * from './lib/components/tas-btn/tas-btn.component';
|
|
12
|
+
export * from './lib/components/tas-waiting-room/tas-waiting-room.component';
|
|
13
|
+
export * from './lib/components/tas-videocall/tas-videocall.component';
|
|
14
|
+
export * from './lib/components/tas-floating-call/tas-floating-call.component';
|
|
15
|
+
// Module
|
|
16
|
+
export * from './lib/tas-uell-sdk.module';
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDJCQUEyQjtBQUMzQixjQUFjLHlCQUF5QixDQUFDO0FBRXhDLGFBQWE7QUFDYixjQUFjLGlDQUFpQyxDQUFDO0FBRWhELFVBQVU7QUFDVixjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGFBQWE7QUFDYixjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLGdFQUFnRSxDQUFDO0FBRS9FLFNBQVM7QUFDVCxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0YXMtdWVsbC1zZGtcbiAqL1xuXG4vLyBDb25maWd1cmF0aW9uIGFuZCB0b2tlbnNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZy90YXMuY29uZmlnJztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy90YXMuaW50ZXJmYWNlcyc7XG5cbi8vIFNlcnZpY2VcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3Rhcy5zZXJ2aWNlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YXMtYnRuL3Rhcy1idG4uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFzLXdhaXRpbmctcm9vbS90YXMtd2FpdGluZy1yb29tLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rhcy12aWRlb2NhbGwvdGFzLXZpZGVvY2FsbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YXMtZmxvYXRpbmctY2FsbC90YXMtZmxvYXRpbmctY2FsbC5jb21wb25lbnQnO1xuXG4vLyBNb2R1bGVcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rhcy11ZWxsLXNkay5tb2R1bGUnO1xuIl19
|
package/esm2020/tas-uell-sdk.mjs
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXVlbGwtc2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvdGFzLXVlbGwtc2RrL3NyYy90YXMtdWVsbC1zZGsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|