@igo2/auth 1.14.2 → 1.14.3
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/esm2020/igo2-auth.mjs +4 -4
- package/esm2020/lib/auth-form/auth-facebook.component.mjs +60 -60
- package/esm2020/lib/auth-form/auth-form.component.mjs +276 -276
- package/esm2020/lib/auth-form/auth-google.component.mjs +98 -98
- package/esm2020/lib/auth-form/auth-intern.component.mjs +118 -118
- package/esm2020/lib/auth-form/auth-microsoft.component.mjs +93 -93
- package/esm2020/lib/auth-form/auth-microsoftb2c.component.mjs +92 -92
- package/esm2020/lib/auth-form/index.mjs +4 -4
- package/esm2020/lib/auth-routing.module.mjs +23 -23
- package/esm2020/lib/auth.module.mjs +90 -90
- package/esm2020/lib/shared/admin.guard.mjs +32 -32
- package/esm2020/lib/shared/auth-microsoft.provider.mjs +83 -83
- package/esm2020/lib/shared/auth-msalBroadcastServiceb2c.service.mjs +37 -37
- package/esm2020/lib/shared/auth-msalServiceb2c.service..mjs +79 -79
- package/esm2020/lib/shared/auth.guard.mjs +31 -31
- package/esm2020/lib/shared/auth.interceptor.mjs +154 -154
- package/esm2020/lib/shared/auth.interface.mjs +1 -1
- package/esm2020/lib/shared/auth.service.mjs +159 -159
- package/esm2020/lib/shared/logged.guard.mjs +31 -31
- package/esm2020/lib/shared/profils.guard.mjs +36 -36
- package/esm2020/lib/shared/protected.directive.mjs +18 -18
- package/esm2020/lib/shared/storage.interface.mjs +1 -1
- package/esm2020/lib/shared/storage.service.mjs +90 -90
- package/esm2020/lib/shared/token.service.mjs +46 -46
- package/esm2020/public_api.mjs +18 -18
- package/fesm2015/igo2-auth.mjs +1579 -1579
- package/fesm2020/igo2-auth.mjs +1477 -1477
- package/index.d.ts +5 -5
- package/lib/auth-form/auth-facebook.component.d.ts +18 -18
- package/lib/auth-form/auth-form.component.d.ts +42 -42
- package/lib/auth-form/auth-google.component.d.ts +24 -24
- package/lib/auth-form/auth-intern.component.d.ts +21 -21
- package/lib/auth-form/auth-microsoft.component.d.ts +23 -23
- package/lib/auth-form/auth-microsoftb2c.component.d.ts +23 -23
- package/lib/auth-form/index.d.ts +4 -4
- package/lib/auth-routing.module.d.ts +7 -7
- package/lib/auth.module.d.ts +23 -23
- package/lib/shared/admin.guard.d.ts +13 -13
- package/lib/shared/auth-microsoft.provider.d.ts +30 -30
- package/lib/shared/auth-msalBroadcastServiceb2c.service.d.ts +15 -15
- package/lib/shared/auth-msalServiceb2c.service..d.ts +33 -33
- package/lib/shared/auth.guard.d.ts +13 -13
- package/lib/shared/auth.interceptor.d.ts +24 -24
- package/lib/shared/auth.interface.d.ts +99 -99
- package/lib/shared/auth.service.d.ts +44 -44
- package/lib/shared/logged.guard.d.ts +13 -13
- package/lib/shared/profils.guard.d.ts +13 -13
- package/lib/shared/protected.directive.d.ts +8 -8
- package/lib/shared/storage.interface.d.ts +4 -4
- package/lib/shared/storage.service.d.ts +18 -18
- package/lib/shared/token.service.d.ts +15 -15
- package/package.json +3 -3
- package/public_api.d.ts +15 -15
package/esm2020/igo2-auth.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public_api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public_api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdvMi1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvaWdvMi1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../shared/auth.service";
|
|
4
|
-
import * as i2 from "@igo2/core";
|
|
5
|
-
export class AuthFacebookComponent {
|
|
6
|
-
constructor(authService, config, appRef) {
|
|
7
|
-
this.authService = authService;
|
|
8
|
-
this.config = config;
|
|
9
|
-
this.appRef = appRef;
|
|
10
|
-
this.login = new EventEmitter();
|
|
11
|
-
this.options = this.config.getConfig('auth.facebook') || {};
|
|
12
|
-
if (this.options.appId) {
|
|
13
|
-
this.loadSDKFacebook();
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
console.warn('Facebook authentification needs "appId" option');
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
subscribeEvents() {
|
|
20
|
-
window.FB.Event.subscribe('auth.statusChange', rep => {
|
|
21
|
-
this.statusChangeCallback(rep);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
statusChangeCallback(response) {
|
|
25
|
-
if (response.status === 'connected') {
|
|
26
|
-
const accessToken = response.authResponse.accessToken;
|
|
27
|
-
this.loginFacebook(accessToken);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
loginFacebook(token) {
|
|
31
|
-
this.authService.loginWithToken(token, 'facebook').subscribe(() => {
|
|
32
|
-
this.appRef.tick();
|
|
33
|
-
this.login.emit(true);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
loadSDKFacebook() {
|
|
37
|
-
if (document.getElementById('facebook-jssdk')) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const urlSDK = 'https://connect.facebook.net/fr_CA/sdk.js#xfbml=1&version=v2.9';
|
|
41
|
-
const fjs = document.getElementsByTagName('script')[0];
|
|
42
|
-
const js = document.createElement('script');
|
|
43
|
-
js.id = 'facebook-jssdk';
|
|
44
|
-
js.src = `${urlSDK}&appId=${this.options.appId}`;
|
|
45
|
-
js.onload = () => {
|
|
46
|
-
this.subscribeEvents();
|
|
47
|
-
};
|
|
48
|
-
fjs.parentNode.insertBefore(js, fjs);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
AuthFacebookComponent.ɵfac = function AuthFacebookComponent_Factory(t) { return new (t || AuthFacebookComponent)(i0.ɵɵdirectiveInject(i1.AuthService), i0.ɵɵdirectiveInject(i2.ConfigService), i0.ɵɵdirectiveInject(i0.ApplicationRef)); };
|
|
52
|
-
AuthFacebookComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AuthFacebookComponent, selectors: [["igo-auth-facebook"]], outputs: { login: "login" }, decls: 1, vars: 0, consts: [["scope", "public_profile,email", "data-max-rows", "1", "data-size", "large", "data-button-type", "login_with", "data-show-faces", "false", "data-auto-logout-link", "false", "data-use-continue-as", "false", 1, "fb-login-button"]], template: function AuthFacebookComponent_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
-
i0.ɵɵelement(0, "div", 0);
|
|
54
|
-
} }, styles: ["[_nghost-%COMP%]{padding:10px 10px 10px 0;display:inline-block;position:relative;top:-3px}"], changeDetection: 0 });
|
|
55
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthFacebookComponent, [{
|
|
56
|
-
type: Component,
|
|
57
|
-
args: [{ selector: 'igo-auth-facebook', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div scope=\"public_profile,email\"\n class=\"fb-login-button\" data-max-rows=\"1\" data-size=\"large\"\n data-button-type=\"login_with\" data-show-faces=\"false\"\n data-auto-logout-link=\"false\" data-use-continue-as=\"false\">\n</div>\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block;position:relative;top:-3px}\n"] }]
|
|
58
|
-
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i0.ApplicationRef }]; }, { login: [{
|
|
59
|
-
type: Output
|
|
60
|
-
}] }); })();
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../shared/auth.service";
|
|
4
|
+
import * as i2 from "@igo2/core";
|
|
5
|
+
export class AuthFacebookComponent {
|
|
6
|
+
constructor(authService, config, appRef) {
|
|
7
|
+
this.authService = authService;
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.appRef = appRef;
|
|
10
|
+
this.login = new EventEmitter();
|
|
11
|
+
this.options = this.config.getConfig('auth.facebook') || {};
|
|
12
|
+
if (this.options.appId) {
|
|
13
|
+
this.loadSDKFacebook();
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
console.warn('Facebook authentification needs "appId" option');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
subscribeEvents() {
|
|
20
|
+
window.FB.Event.subscribe('auth.statusChange', rep => {
|
|
21
|
+
this.statusChangeCallback(rep);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
statusChangeCallback(response) {
|
|
25
|
+
if (response.status === 'connected') {
|
|
26
|
+
const accessToken = response.authResponse.accessToken;
|
|
27
|
+
this.loginFacebook(accessToken);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
loginFacebook(token) {
|
|
31
|
+
this.authService.loginWithToken(token, 'facebook').subscribe(() => {
|
|
32
|
+
this.appRef.tick();
|
|
33
|
+
this.login.emit(true);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
loadSDKFacebook() {
|
|
37
|
+
if (document.getElementById('facebook-jssdk')) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const urlSDK = 'https://connect.facebook.net/fr_CA/sdk.js#xfbml=1&version=v2.9';
|
|
41
|
+
const fjs = document.getElementsByTagName('script')[0];
|
|
42
|
+
const js = document.createElement('script');
|
|
43
|
+
js.id = 'facebook-jssdk';
|
|
44
|
+
js.src = `${urlSDK}&appId=${this.options.appId}`;
|
|
45
|
+
js.onload = () => {
|
|
46
|
+
this.subscribeEvents();
|
|
47
|
+
};
|
|
48
|
+
fjs.parentNode.insertBefore(js, fjs);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
AuthFacebookComponent.ɵfac = function AuthFacebookComponent_Factory(t) { return new (t || AuthFacebookComponent)(i0.ɵɵdirectiveInject(i1.AuthService), i0.ɵɵdirectiveInject(i2.ConfigService), i0.ɵɵdirectiveInject(i0.ApplicationRef)); };
|
|
52
|
+
AuthFacebookComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AuthFacebookComponent, selectors: [["igo-auth-facebook"]], outputs: { login: "login" }, decls: 1, vars: 0, consts: [["scope", "public_profile,email", "data-max-rows", "1", "data-size", "large", "data-button-type", "login_with", "data-show-faces", "false", "data-auto-logout-link", "false", "data-use-continue-as", "false", 1, "fb-login-button"]], template: function AuthFacebookComponent_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
+
i0.ɵɵelement(0, "div", 0);
|
|
54
|
+
} }, styles: ["[_nghost-%COMP%]{padding:10px 10px 10px 0;display:inline-block;position:relative;top:-3px}"], changeDetection: 0 });
|
|
55
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthFacebookComponent, [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{ selector: 'igo-auth-facebook', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div scope=\"public_profile,email\"\n class=\"fb-login-button\" data-max-rows=\"1\" data-size=\"large\"\n data-button-type=\"login_with\" data-show-faces=\"false\"\n data-auto-logout-link=\"false\" data-use-continue-as=\"false\">\n</div>\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block;position:relative;top:-3px}\n"] }]
|
|
58
|
+
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i0.ApplicationRef }]; }, { login: [{
|
|
59
|
+
type: Output
|
|
60
|
+
}] }); })();
|
|
61
61
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mYWNlYm9vay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC1mb3JtL2F1dGgtZmFjZWJvb2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGgtZm9ybS9hdXRoLWZhY2Vib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBRXZCLE1BQU0sRUFDTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7Ozs7QUFZdkIsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQyxZQUNVLFdBQXdCLEVBQ3hCLE1BQXFCLEVBQ3JCLE1BQXNCO1FBRnRCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFMdEIsVUFBSyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBT25FLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNwQixNQUFjLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDNUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFFBQVE7UUFDbkMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUNuQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztZQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFLO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUM3QyxPQUFPO1NBQ1I7UUFFRCxNQUFNLE1BQU0sR0FDVixnRUFBZ0UsQ0FBQztRQUVuRSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxFQUFFLENBQUMsRUFBRSxHQUFHLGdCQUFnQixDQUFDO1FBQ3pCLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqRCxFQUFFLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUM7UUFDRixHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7MEZBdkRVLHFCQUFxQjt3RUFBckIscUJBQXFCO1FDbEJsQyx5QkFJTTs7dUZEY08scUJBQXFCO2NBTmpDLFNBQVM7MkJBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07dUhBS3JDLEtBQUs7a0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEFwcGxpY2F0aW9uUmVmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgQXV0aEZhY2Vib29rT3B0aW9ucyB9IGZyb20gJy4uL3NoYXJlZC9hdXRoLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tYXV0aC1mYWNlYm9vaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWZhY2Vib29rLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0aC1mYWNlYm9vay5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoRmFjZWJvb2tDb21wb25lbnQge1xuICBwcml2YXRlIG9wdGlvbnM6IEF1dGhGYWNlYm9va09wdGlvbnM7XG5cbiAgQE91dHB1dCgpIGxvZ2luOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWc6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmXG4gICkge1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY29uZmlnLmdldENvbmZpZygnYXV0aC5mYWNlYm9vaycpIHx8IHt9O1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hcHBJZCkge1xuICAgICAgdGhpcy5sb2FkU0RLRmFjZWJvb2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdGYWNlYm9vayBhdXRoZW50aWZpY2F0aW9uIG5lZWRzIFwiYXBwSWRcIiBvcHRpb24nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZUV2ZW50cygpIHtcbiAgICAod2luZG93IGFzIGFueSkuRkIuRXZlbnQuc3Vic2NyaWJlKCdhdXRoLnN0YXR1c0NoYW5nZScsIHJlcCA9PiB7XG4gICAgICB0aGlzLnN0YXR1c0NoYW5nZUNhbGxiYWNrKHJlcCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXR1c0NoYW5nZUNhbGxiYWNrKHJlc3BvbnNlKSB7XG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcpIHtcbiAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gcmVzcG9uc2UuYXV0aFJlc3BvbnNlLmFjY2Vzc1Rva2VuO1xuICAgICAgdGhpcy5sb2dpbkZhY2Vib29rKGFjY2Vzc1Rva2VuKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvZ2luRmFjZWJvb2sodG9rZW4pIHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2luV2l0aFRva2VuKHRva2VuLCAnZmFjZWJvb2snKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xuICAgICAgdGhpcy5sb2dpbi5lbWl0KHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkU0RLRmFjZWJvb2soKSB7XG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmYWNlYm9vay1qc3NkaycpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJsU0RLID1cbiAgICAgICdodHRwczovL2Nvbm5lY3QuZmFjZWJvb2submV0L2ZyX0NBL3Nkay5qcyN4ZmJtbD0xJnZlcnNpb249djIuOSc7XG5cbiAgICBjb25zdCBmanMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07XG4gICAgY29uc3QganMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBqcy5pZCA9ICdmYWNlYm9vay1qc3Nkayc7XG4gICAganMuc3JjID0gYCR7dXJsU0RLfSZhcHBJZD0ke3RoaXMub3B0aW9ucy5hcHBJZH1gO1xuICAgIGpzLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlRXZlbnRzKCk7XG4gICAgfTtcbiAgICBmanMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoanMsIGZqcyk7XG4gIH1cbn1cbiIsIjxkaXYgc2NvcGU9XCJwdWJsaWNfcHJvZmlsZSxlbWFpbFwiXG4gICAgIGNsYXNzPVwiZmItbG9naW4tYnV0dG9uXCIgZGF0YS1tYXgtcm93cz1cIjFcIiBkYXRhLXNpemU9XCJsYXJnZVwiXG4gICAgIGRhdGEtYnV0dG9uLXR5cGU9XCJsb2dpbl93aXRoXCIgZGF0YS1zaG93LWZhY2VzPVwiZmFsc2VcIlxuICAgICBkYXRhLWF1dG8tbG9nb3V0LWxpbms9XCJmYWxzZVwiIGRhdGEtdXNlLWNvbnRpbnVlLWFzPVwiZmFsc2VcIj5cbjwvZGl2PlxuIl19
|