@esfaenza/core 15.2.0
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 +24 -0
- package/components/back-top/back-top.component.d.ts +12 -0
- package/components/breadcrumb/breadcrumb.component.d.ts +15 -0
- package/components/components.module.d.ts +25 -0
- package/components/error/404/pagenotfound.component.d.ts +13 -0
- package/components/error/500/servererror.component.d.ts +17 -0
- package/components/error/Angular/angularerror.component.d.ts +24 -0
- package/components/external-page/external_pages.component.d.ts +21 -0
- package/components/index.d.ts +5 -0
- package/components/jace-login/jace-login.component.d.ts +7 -0
- package/components/navbar/modules-board/jace-modules-board.component.d.ts +13 -0
- package/components/navbar/navbar.component.d.ts +60 -0
- package/components/navbar/navbar.component.loc.d.ts +8 -0
- package/components/page/pages.component.d.ts +23 -0
- package/components/public-api.d.ts +13 -0
- package/components/redirecter/redirecter.component.d.ts +19 -0
- package/components/sidebar/sidebar.component.d.ts +39 -0
- package/components/sidebar/sidebar.component.service.d.ts +27 -0
- package/directives/directives.module.d.ts +9 -0
- package/directives/draggable/draggable.directive.d.ts +13 -0
- package/directives/index.d.ts +5 -0
- package/directives/public-api.d.ts +4 -0
- package/directives/slim-scroll/slim-scroll.directive.d.ts +15 -0
- package/directives/widget/widget.directive.d.ts +9 -0
- package/domain/index.d.ts +5 -0
- package/domain/models/core/classes/ApplicationMenu.d.ts +16 -0
- package/domain/models/core/classes/EnvOptions.d.ts +14 -0
- package/domain/models/jace/classes/AccountScope.d.ts +9 -0
- package/domain/models/jace/classes/ActiveModuleView.d.ts +15 -0
- package/domain/models/jace/classes/JaceAccount.d.ts +26 -0
- package/domain/models/jace/classes/JaceIdentity.d.ts +17 -0
- package/domain/models/jace/classes/JaceModule.d.ts +6 -0
- package/domain/models/jace/classes/JacePermission.d.ts +9 -0
- package/domain/models/jace/classes/JaceRole.d.ts +11 -0
- package/domain/models/jace/classes/User.d.ts +4 -0
- package/domain/public-api.d.ts +11 -0
- package/domain/tokens.d.ts +16 -0
- package/esm2020/components/back-top/back-top.component.mjs +43 -0
- package/esm2020/components/breadcrumb/breadcrumb.component.mjs +55 -0
- package/esm2020/components/components.module.mjs +74 -0
- package/esm2020/components/error/404/pagenotfound.component.mjs +27 -0
- package/esm2020/components/error/500/servererror.component.mjs +35 -0
- package/esm2020/components/error/Angular/angularerror.component.mjs +50 -0
- package/esm2020/components/esfaenza-core-components.mjs +5 -0
- package/esm2020/components/external-page/external_pages.component.mjs +46 -0
- package/esm2020/components/jace-login/jace-login.component.mjs +17 -0
- package/esm2020/components/navbar/modules-board/jace-modules-board.component.mjs +40 -0
- package/esm2020/components/navbar/navbar.component.loc.mjs +36 -0
- package/esm2020/components/navbar/navbar.component.mjs +179 -0
- package/esm2020/components/page/pages.component.mjs +57 -0
- package/esm2020/components/public-api.mjs +14 -0
- package/esm2020/components/redirecter/redirecter.component.mjs +53 -0
- package/esm2020/components/sidebar/sidebar.component.mjs +179 -0
- package/esm2020/components/sidebar/sidebar.component.service.mjs +58 -0
- package/esm2020/directives/directives.module.mjs +18 -0
- package/esm2020/directives/draggable/draggable.directive.mjs +48 -0
- package/esm2020/directives/esfaenza-core-directives.mjs +5 -0
- package/esm2020/directives/public-api.mjs +5 -0
- package/esm2020/directives/slim-scroll/slim-scroll.directive.mjs +40 -0
- package/esm2020/directives/widget/widget.directive.mjs +36 -0
- package/esm2020/domain/esfaenza-core-domain.mjs +5 -0
- package/esm2020/domain/models/core/classes/ApplicationMenu.mjs +26 -0
- package/esm2020/domain/models/core/classes/EnvOptions.mjs +4 -0
- package/esm2020/domain/models/jace/classes/AccountScope.mjs +8 -0
- package/esm2020/domain/models/jace/classes/ActiveModuleView.mjs +9 -0
- package/esm2020/domain/models/jace/classes/JaceAccount.mjs +5 -0
- package/esm2020/domain/models/jace/classes/JaceIdentity.mjs +16 -0
- package/esm2020/domain/models/jace/classes/JaceModule.mjs +3 -0
- package/esm2020/domain/models/jace/classes/JacePermission.mjs +3 -0
- package/esm2020/domain/models/jace/classes/JaceRole.mjs +3 -0
- package/esm2020/domain/models/jace/classes/User.mjs +3 -0
- package/esm2020/domain/public-api.mjs +12 -0
- package/esm2020/domain/tokens.mjs +11 -0
- package/esm2020/esfaenza-core.mjs +5 -0
- package/esm2020/helpers/classes/ResizeListener.mjs +38 -0
- package/esm2020/helpers/esfaenza-core-helpers.mjs +5 -0
- package/esm2020/helpers/public-api.mjs +2 -0
- package/esm2020/lib/app.component.mjs +26 -0
- package/esm2020/lib/core.module.mjs +227 -0
- package/esm2020/modules/classes/_base.module.mjs +27 -0
- package/esm2020/modules/classes/t_c.module.mjs +85 -0
- package/esm2020/modules/esfaenza-core-modules.mjs +5 -0
- package/esm2020/modules/public-api.mjs +3 -0
- package/esm2020/pipes/esfaenza-core-pipes.mjs +5 -0
- package/esm2020/pipes/included_in/included_in.pipe.mjs +17 -0
- package/esm2020/pipes/pipes.module.mjs +20 -0
- package/esm2020/pipes/public-api.mjs +7 -0
- package/esm2020/pipes/safe_html/safe_html.pipe.mjs +18 -0
- package/esm2020/pipes/safe_script/safe_script.pipe.mjs +18 -0
- package/esm2020/pipes/safe_style/safe_style.pipe.mjs +18 -0
- package/esm2020/pipes/safe_url/safe_url.pipe.mjs +18 -0
- package/esm2020/public-api.mjs +4 -0
- package/esm2020/services/classes/app.accesstoken.mjs +51 -0
- package/esm2020/services/classes/app.errorhandler.mjs +41 -0
- package/esm2020/services/classes/app.event.mjs +27 -0
- package/esm2020/services/classes/app.httpextensions.loc.mjs +15 -0
- package/esm2020/services/classes/app.httpextensions.mjs +90 -0
- package/esm2020/services/classes/app.routeguard.mjs +22 -0
- package/esm2020/services/classes/app.session.mjs +33 -0
- package/esm2020/services/classes/app.state.mjs +172 -0
- package/esm2020/services/classes/preferences/app.cache.persistor.mjs +94 -0
- package/esm2020/services/classes/preferences/app.preference.persistor.mjs +94 -0
- package/esm2020/services/esfaenza-core-services.mjs +5 -0
- package/esm2020/services/public-api.mjs +10 -0
- package/fesm2015/esfaenza-core-components.mjs +870 -0
- package/fesm2015/esfaenza-core-components.mjs.map +1 -0
- package/fesm2015/esfaenza-core-directives.mjs +138 -0
- package/fesm2015/esfaenza-core-directives.mjs.map +1 -0
- package/fesm2015/esfaenza-core-domain.mjs +99 -0
- package/fesm2015/esfaenza-core-domain.mjs.map +1 -0
- package/fesm2015/esfaenza-core-helpers.mjs +44 -0
- package/fesm2015/esfaenza-core-helpers.mjs.map +1 -0
- package/fesm2015/esfaenza-core-modules.mjs +112 -0
- package/fesm2015/esfaenza-core-modules.mjs.map +1 -0
- package/fesm2015/esfaenza-core-pipes.mjs +97 -0
- package/fesm2015/esfaenza-core-pipes.mjs.map +1 -0
- package/fesm2015/esfaenza-core-services.mjs +598 -0
- package/fesm2015/esfaenza-core-services.mjs.map +1 -0
- package/fesm2015/esfaenza-core.mjs +251 -0
- package/fesm2015/esfaenza-core.mjs.map +1 -0
- package/fesm2020/esfaenza-core-components.mjs +863 -0
- package/fesm2020/esfaenza-core-components.mjs.map +1 -0
- package/fesm2020/esfaenza-core-directives.mjs +138 -0
- package/fesm2020/esfaenza-core-directives.mjs.map +1 -0
- package/fesm2020/esfaenza-core-domain.mjs +98 -0
- package/fesm2020/esfaenza-core-domain.mjs.map +1 -0
- package/fesm2020/esfaenza-core-helpers.mjs +44 -0
- package/fesm2020/esfaenza-core-helpers.mjs.map +1 -0
- package/fesm2020/esfaenza-core-modules.mjs +112 -0
- package/fesm2020/esfaenza-core-modules.mjs.map +1 -0
- package/fesm2020/esfaenza-core-pipes.mjs +97 -0
- package/fesm2020/esfaenza-core-pipes.mjs.map +1 -0
- package/fesm2020/esfaenza-core-services.mjs +595 -0
- package/fesm2020/esfaenza-core-services.mjs.map +1 -0
- package/fesm2020/esfaenza-core.mjs +251 -0
- package/fesm2020/esfaenza-core.mjs.map +1 -0
- package/helpers/classes/ResizeListener.d.ts +12 -0
- package/helpers/index.d.ts +5 -0
- package/helpers/public-api.d.ts +1 -0
- package/index.d.ts +5 -0
- package/lib/app.component.d.ts +12 -0
- package/lib/core.module.d.ts +82 -0
- package/modules/classes/_base.module.d.ts +4 -0
- package/modules/classes/t_c.module.d.ts +19 -0
- package/modules/index.d.ts +5 -0
- package/modules/public-api.d.ts +2 -0
- package/package.json +115 -0
- package/pipes/included_in/included_in.pipe.d.ts +7 -0
- package/pipes/index.d.ts +5 -0
- package/pipes/pipes.module.d.ts +11 -0
- package/pipes/public-api.d.ts +6 -0
- package/pipes/safe_html/safe_html.pipe.d.ts +10 -0
- package/pipes/safe_script/safe_script.pipe.d.ts +10 -0
- package/pipes/safe_style/safe_style.pipe.d.ts +10 -0
- package/pipes/safe_url/safe_url.pipe.d.ts +10 -0
- package/public-api.d.ts +3 -0
- package/services/classes/app.accesstoken.d.ts +15 -0
- package/services/classes/app.errorhandler.d.ts +11 -0
- package/services/classes/app.event.d.ts +10 -0
- package/services/classes/app.httpextensions.d.ts +34 -0
- package/services/classes/app.httpextensions.loc.d.ts +8 -0
- package/services/classes/app.routeguard.d.ts +10 -0
- package/services/classes/app.session.d.ts +14 -0
- package/services/classes/app.state.d.ts +59 -0
- package/services/classes/preferences/app.cache.persistor.d.ts +25 -0
- package/services/classes/preferences/app.preference.persistor.d.ts +25 -0
- package/services/index.d.ts +5 -0
- package/services/public-api.d.ts +9 -0
- package/theme/initial.scss +48 -0
- package/theme/styles/_base.scss +257 -0
- package/theme/styles/_bootstrap-override.scss +1624 -0
- package/theme/styles/_font.scss +86 -0
- package/theme/styles/_fullcalendar-override.scss +86 -0
- package/theme/styles/_libs-override.scss +97 -0
- package/theme/styles/_material-override.scss +231 -0
- package/theme/styles/_mixins.scss +50 -0
- package/theme/styles/_preloader.scss +119 -0
- package/theme/styles/_project-override.scss +2383 -0
- package/theme/styles/_variables.scss +52 -0
- package/theme/styles/skins/_blue.scss +16 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Inject, Injectable, Optional } from "@angular/core";
|
|
3
|
+
// Applicazione
|
|
4
|
+
import { JaceIdentity, USE_FAKE_ACCESS_TOKEN } from "@esfaenza/core/domain";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "ngx-cookie-service";
|
|
7
|
+
export class TokenService {
|
|
8
|
+
constructor(cs, USE_FAKE_ACCESS_TOKEN) {
|
|
9
|
+
this.cs = cs;
|
|
10
|
+
this.USE_FAKE_ACCESS_TOKEN = USE_FAKE_ACCESS_TOKEN;
|
|
11
|
+
}
|
|
12
|
+
clearTokens() {
|
|
13
|
+
this.cs.delete("access_token");
|
|
14
|
+
}
|
|
15
|
+
getAccessToken() {
|
|
16
|
+
return this.USE_FAKE_ACCESS_TOKEN ? this.getFakeToken() : this.cs.get("accessToken");
|
|
17
|
+
}
|
|
18
|
+
getJaceIdentity() {
|
|
19
|
+
let token = this.USE_FAKE_ACCESS_TOKEN ? this.getFakeToken() : this.cs.get("accessToken");
|
|
20
|
+
if (!token)
|
|
21
|
+
return null;
|
|
22
|
+
let base64Url = token.split(".")[1];
|
|
23
|
+
let base64 = base64Url.replace("-", "+").replace("_", "/");
|
|
24
|
+
let tokenData = JSON.parse(decodeURIComponent(window.atob(base64).split("").map(c => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2)).join("")));
|
|
25
|
+
let identity = new JaceIdentity(this.accountScope);
|
|
26
|
+
identity.IdAccount = tokenData.ACCOUNTID;
|
|
27
|
+
identity.IdUser = tokenData.USERID;
|
|
28
|
+
identity.DsUser = tokenData.USERNAME;
|
|
29
|
+
identity.FullName = tokenData.USERDESCRIPTION;
|
|
30
|
+
identity.Idtenant = tokenData.TENANT;
|
|
31
|
+
identity.TenantName = tokenData.TENANTNAME;
|
|
32
|
+
identity.ExpirationTime = new Date(tokenData.exp * 1000); //unix-epoch in secondi -> millisecondi
|
|
33
|
+
return identity;
|
|
34
|
+
}
|
|
35
|
+
//Accesstoken fittizio ma valido, per simulare la connession corretta col backend
|
|
36
|
+
getFakeToken() {
|
|
37
|
+
return "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE1OTA0MTU4NDYsImV4cCI6MTk5MDQyMDA2NSwiaXNzIjoiaHR0cDovL2F1dGhhcGlzdGFnaW5nYS5qYWNlLmVuZXJneXNvZnR3YXJlLnByaXYiLCJhdWQiOlsiaHR0cDovL2F1dGhhcGlzdGFnaW5nYS5qYWNlLmVuZXJneXNvZnR3YXJlLnByaXYvcmVzb3VyY2VzIiwiYXV0aGVudGljYXRpbyJdLCJjbGllbnRfaWQiOiJtZXRlcmluZ3N0YWdpbmciLCJzdWIiOiIxMDAzIiwiYXV0aF90aW1lIjoxNTkwNDE1ODQ2LCJpZHAiOiJsb2NhbCIsIkFDQ09VTlRJRCI6IjEwMDMiLCJVU0VSSUQiOiIyNTkiLCJVU0VSREVTQ1JJUFRJT04iOiJUZXN0IFVzZXIiLCJVU0VSTkFNRSI6IlRFU1QiLCJURU5BTlQiOiJGWCIsIlRFTkFOVE5BTUUiOiJGZW5peCBTcmwiLCJyb2xlIjpbIkJhY2tvZmZpY2UiLCJEYXRhIE1hbmFnZXIiLCJUcmFkaW5nIiwiUmVtaXQgTWFuYWdlciIsIlRlbmFudCBSZWFkZXIiLCJDb21wbC4gQVJFUkEgUmVhZGVyIiwiQ29tcGwuIEFSRVJBIFdyaXRlciBMMSIsIkNvbXBsLiBBUkVSQSBXcml0ZXIgTDIiLCJKYWNlIEFkbWluIl0sIk1PRFVMRSI6WyIzNiIsIjM3IiwiMTQiLCI1IiwiMzIiLCIxNSIsIjQyIiwiOCIsIjE3IiwiMTEiLCIyMSIsIjkiLCIzOCIsIjE4IiwiNyIsIjM0IiwiMTYiLCIyMCIsIjE5IiwiMSIsIjIiLCIzMSIsIjEyIiwiMTAiLCIzMyIsIjQwIiwiMjIiLCIxMyIsIjYiXSwiUEVSTUlTU0lPTiI6WyJleHRyYWN0X2RhdGEiLCJtZG1fcmVhZCIsIm1kbV9hZHZfb3AiLCJtZG1fY2ZnX2Jhc2UiLCJjcmVhdGVfdHJhZGUiLCJtZG1fbWFzc19kZWwiLCJzZW5kX2NvbW0iLCJtZG1fZmN0IiwibWRtX2NmZ19hZHYiLCJtZG1fY2ZnX3JlYWQiLCJtYW5hZ2VfZWxlIiwibWFuYWdlX2dhcyIsImNvbmZpcm1fdHJhZGUiLCJtZG1fY3VzdG9taXplIiwibmV3X2NvbW0iLCJtZG1fbWFzc19mY3QiLCJtZG1fb3AiLCJ2aWV3X2JpbGxpbmciLCJtZG1fbWFzc19vcCIsIm1kbV9hZHZfcmVhZCJdLCJqdGkiOiIwZTUzMDc1NjE2MDZlNDQ0ZTI4ODViMTFhMzE0NDQyMSIsInNjb3BlIjpbImF1dGgiLCJvZmZsaW5lX2FjY2VzcyJdLCJhbXIiOlsicGFzc3dvcmQiXSwiaWF0IjoxNTkwNDE2NDY1fQ.MNcphwkIwvLFDDpLaFDN3GK11lgT2aqvXa8s7bQJgdE";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
TokenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TokenService, deps: [{ token: i1.CookieService }, { token: USE_FAKE_ACCESS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
+
TokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TokenService, providedIn: "root" });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TokenService, decorators: [{
|
|
43
|
+
type: Injectable,
|
|
44
|
+
args: [{ providedIn: "root" }]
|
|
45
|
+
}], ctorParameters: function () { return [{ type: i1.CookieService }, { type: undefined, decorators: [{
|
|
46
|
+
type: Optional
|
|
47
|
+
}, {
|
|
48
|
+
type: Inject,
|
|
49
|
+
args: [USE_FAKE_ACCESS_TOKEN]
|
|
50
|
+
}] }]; } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmFjY2Vzc3Rva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zZXJ2aWNlcy9zcmMvY2xhc3Nlcy9hcHAuYWNjZXNzdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxlQUFlO0FBQ2YsT0FBTyxFQUFnQixZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRzFGLE1BQU0sT0FBTyxZQUFZO0lBSXJCLFlBQW1CLEVBQWlCLEVBQXFELHFCQUE4QjtRQUFwRyxPQUFFLEdBQUYsRUFBRSxDQUFlO1FBQXFELDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUztJQUFJLENBQUM7SUFFNUgsV0FBVztRQUNQLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLEtBQUs7WUFDTixPQUFPLElBQUksQ0FBQztRQUVoQixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkosSUFBSSxRQUFRLEdBQWlCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRSxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDekMsUUFBUSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNyQyxRQUFRLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUM7UUFDOUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3JDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztRQUMzQyxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQSx1Q0FBdUM7UUFFaEcsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELGlGQUFpRjtJQUN6RSxZQUFZO1FBQ2hCLE9BQU8sNi9DQUE2L0MsQ0FBQztJQUN6Z0QsQ0FBQzs7eUdBdENRLFlBQVksK0NBSXFDLHFCQUFxQjs2R0FKdEUsWUFBWSxjQURDLE1BQU07MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFLUyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBEaXJldHRpdmUsIENvbXBvbmVudGksIExpYnJlcmllXHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZS1zZXJ2aWNlXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgQWNjb3VudFNjb3BlLCBKYWNlSWRlbnRpdHksIFVTRV9GQUtFX0FDQ0VTU19UT0tFTiB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcclxuZXhwb3J0IGNsYXNzIFRva2VuU2VydmljZSB7XHJcbiAgICBcclxuICAgIHB1YmxpYyBhY2NvdW50U2NvcGU6IEFjY291bnRTY29wZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY3M6IENvb2tpZVNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoVVNFX0ZBS0VfQUNDRVNTX1RPS0VOKSBwcml2YXRlIFVTRV9GQUtFX0FDQ0VTU19UT0tFTjogYm9vbGVhbikgeyB9XHJcblxyXG4gICAgY2xlYXJUb2tlbnMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jcy5kZWxldGUoXCJhY2Nlc3NfdG9rZW5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWNjZXNzVG9rZW4oKTogU3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5VU0VfRkFLRV9BQ0NFU1NfVE9LRU4gPyB0aGlzLmdldEZha2VUb2tlbigpIDogdGhpcy5jcy5nZXQoXCJhY2Nlc3NUb2tlblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRKYWNlSWRlbnRpdHkoKTogSmFjZUlkZW50aXR5IHtcclxuICAgICAgICBsZXQgdG9rZW4gPSB0aGlzLlVTRV9GQUtFX0FDQ0VTU19UT0tFTiA/IHRoaXMuZ2V0RmFrZVRva2VuKCkgOiB0aGlzLmNzLmdldChcImFjY2Vzc1Rva2VuXCIpO1xyXG4gICAgICAgIGlmICghdG9rZW4pXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBsZXQgYmFzZTY0VXJsID0gdG9rZW4uc3BsaXQoXCIuXCIpWzFdO1xyXG4gICAgICAgIGxldCBiYXNlNjQgPSBiYXNlNjRVcmwucmVwbGFjZShcIi1cIiwgXCIrXCIpLnJlcGxhY2UoXCJfXCIsIFwiL1wiKTtcclxuICAgICAgICBsZXQgdG9rZW5EYXRhID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQod2luZG93LmF0b2IoYmFzZTY0KS5zcGxpdChcIlwiKS5tYXAoYyA9PiBcIiVcIiArIChcIjAwXCIgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikpLmpvaW4oXCJcIikpKTtcclxuXHJcbiAgICAgICAgbGV0IGlkZW50aXR5OiBKYWNlSWRlbnRpdHkgPSBuZXcgSmFjZUlkZW50aXR5KHRoaXMuYWNjb3VudFNjb3BlKTtcclxuICAgICAgICBpZGVudGl0eS5JZEFjY291bnQgPSB0b2tlbkRhdGEuQUNDT1VOVElEO1xyXG4gICAgICAgIGlkZW50aXR5LklkVXNlciA9IHRva2VuRGF0YS5VU0VSSUQ7XHJcbiAgICAgICAgaWRlbnRpdHkuRHNVc2VyID0gdG9rZW5EYXRhLlVTRVJOQU1FO1xyXG4gICAgICAgIGlkZW50aXR5LkZ1bGxOYW1lID0gdG9rZW5EYXRhLlVTRVJERVNDUklQVElPTjtcclxuICAgICAgICBpZGVudGl0eS5JZHRlbmFudCA9IHRva2VuRGF0YS5URU5BTlQ7XHJcbiAgICAgICAgaWRlbnRpdHkuVGVuYW50TmFtZSA9IHRva2VuRGF0YS5URU5BTlROQU1FO1xyXG4gICAgICAgIGlkZW50aXR5LkV4cGlyYXRpb25UaW1lID0gbmV3IERhdGUodG9rZW5EYXRhLmV4cCAqIDEwMDApOy8vdW5peC1lcG9jaCBpbiBzZWNvbmRpIC0+IG1pbGxpc2Vjb25kaVxyXG5cclxuICAgICAgICByZXR1cm4gaWRlbnRpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9BY2Nlc3N0b2tlbiBmaXR0aXppbyBtYSB2YWxpZG8sIHBlciBzaW11bGFyZSBsYSBjb25uZXNzaW9uIGNvcnJldHRhIGNvbCBiYWNrZW5kXHJcbiAgICBwcml2YXRlIGdldEZha2VUb2tlbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBcImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOS5leUp1WW1ZaU9qRTFPVEEwTVRVNE5EWXNJbVY0Y0NJNk1UazVNRFF5TURBMk5Td2lhWE56SWpvaWFIUjBjRG92TDJGMWRHaGhjR2x6ZEdGbmFXNW5ZUzVxWVdObExtVnVaWEpuZVhOdlpuUjNZWEpsTG5CeWFYWWlMQ0poZFdRaU9sc2lhSFIwY0RvdkwyRjFkR2hoY0dsemRHRm5hVzVuWVM1cVlXTmxMbVZ1WlhKbmVYTnZablIzWVhKbExuQnlhWFl2Y21WemIzVnlZMlZ6SWl3aVlYVjBhR1Z1ZEdsallYUnBieUpkTENKamJHbGxiblJmYVdRaU9pSnRaWFJsY21sdVozTjBZV2RwYm1jaUxDSnpkV0lpT2lJeE1EQXpJaXdpWVhWMGFGOTBhVzFsSWpveE5Ua3dOREUxT0RRMkxDSnBaSEFpT2lKc2IyTmhiQ0lzSWtGRFEwOVZUbFJKUkNJNklqRXdNRE1pTENKVlUwVlNTVVFpT2lJeU5Ua2lMQ0pWVTBWU1JFVlRRMUpKVUZSSlQwNGlPaUpVWlhOMElGVnpaWElpTENKVlUwVlNUa0ZOUlNJNklsUkZVMVFpTENKVVJVNUJUbFFpT2lKR1dDSXNJbFJGVGtGT1ZFNUJUVVVpT2lKR1pXNXBlQ0JUY213aUxDSnliMnhsSWpwYklrSmhZMnR2Wm1acFkyVWlMQ0pFWVhSaElFMWhibUZuWlhJaUxDSlVjbUZrYVc1bklpd2lVbVZ0YVhRZ1RXRnVZV2RsY2lJc0lsUmxibUZ1ZENCU1pXRmtaWElpTENKRGIyMXdiQzRnUVZKRlVrRWdVbVZoWkdWeUlpd2lRMjl0Y0d3dUlFRlNSVkpCSUZkeWFYUmxjaUJNTVNJc0lrTnZiWEJzTGlCQlVrVlNRU0JYY21sMFpYSWdURElpTENKS1lXTmxJRUZrYldsdUlsMHNJazFQUkZWTVJTSTZXeUl6TmlJc0lqTTNJaXdpTVRRaUxDSTFJaXdpTXpJaUxDSXhOU0lzSWpReUlpd2lPQ0lzSWpFM0lpd2lNVEVpTENJeU1TSXNJamtpTENJek9DSXNJakU0SWl3aU55SXNJak0wSWl3aU1UWWlMQ0l5TUNJc0lqRTVJaXdpTVNJc0lqSWlMQ0l6TVNJc0lqRXlJaXdpTVRBaUxDSXpNeUlzSWpRd0lpd2lNaklpTENJeE15SXNJallpWFN3aVVFVlNUVWxUVTBsUFRpSTZXeUpsZUhSeVlXTjBYMlJoZEdFaUxDSnRaRzFmY21WaFpDSXNJbTFrYlY5aFpIWmZiM0FpTENKdFpHMWZZMlpuWDJKaGMyVWlMQ0pqY21WaGRHVmZkSEpoWkdVaUxDSnRaRzFmYldGemMxOWtaV3dpTENKelpXNWtYMk52YlcwaUxDSnRaRzFmWm1OMElpd2liV1J0WDJObVoxOWhaSFlpTENKdFpHMWZZMlpuWDNKbFlXUWlMQ0p0WVc1aFoyVmZaV3hsSWl3aWJXRnVZV2RsWDJkaGN5SXNJbU52Ym1acGNtMWZkSEpoWkdVaUxDSnRaRzFmWTNWemRHOXRhWHBsSWl3aWJtVjNYMk52YlcwaUxDSnRaRzFmYldGemMxOW1ZM1FpTENKdFpHMWZiM0FpTENKMmFXVjNYMkpwYkd4cGJtY2lMQ0p0WkcxZmJXRnpjMTl2Y0NJc0ltMWtiVjloWkhaZmNtVmhaQ0pkTENKcWRHa2lPaUl3WlRVek1EYzFOakUyTURabE5EUTBaVEk0T0RWaU1URmhNekUwTkRReU1TSXNJbk5qYjNCbElqcGJJbUYxZEdnaUxDSnZabVpzYVc1bFgyRmpZMlZ6Y3lKZExDSmhiWElpT2xzaWNHRnpjM2R2Y21RaVhTd2lhV0YwSWpveE5Ua3dOREUyTkRZMWZRLk1OY3Bod2tJd3ZMRkREcExhRkROM0dLMTFsZ1QyYXF2WGE4czdiUUpnZEVcIjtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import { HttpErrorResponse } from "@angular/common/http";
|
|
4
|
+
import { Router } from "@angular/router";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class APPErrorHandler {
|
|
7
|
+
constructor(injector) {
|
|
8
|
+
this.injector = injector;
|
|
9
|
+
}
|
|
10
|
+
handleError(error) {
|
|
11
|
+
if (this.router == null)
|
|
12
|
+
this.router = this.injector.get(Router);
|
|
13
|
+
//Ignoro eventuali errori di javascript quando il redirect è attivo
|
|
14
|
+
if (myconfig && myconfig.redirectInProgress) {
|
|
15
|
+
console.log("Javascript error on redirect in progress, ignoring this event");
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
//In caso io abbia impostato succesresultmandatory nell'httprequest e questa abbia dato errore tiro fuori un exception che dev'essere mostrata come si deve
|
|
19
|
+
var newError = "";
|
|
20
|
+
if (!error.message && !error.stack)
|
|
21
|
+
newError = error;
|
|
22
|
+
else if (error instanceof HttpErrorResponse)
|
|
23
|
+
newError = error.message;
|
|
24
|
+
else
|
|
25
|
+
newError = error.stack && error.stack.length > 1000 ? error.stack.substring(0, 999) + "[...]" : error.stack;
|
|
26
|
+
var pars = { errorMessage: this.b64EncodeUnicode(newError), fromUrl: this.router.url };
|
|
27
|
+
this.router.navigate(["/anerr", pars]);
|
|
28
|
+
}
|
|
29
|
+
b64EncodeUnicode(str) {
|
|
30
|
+
// first we use encodeURIComponent to get percent-encoded UTF-8,
|
|
31
|
+
// then we convert the percent encodings into raw bytes which
|
|
32
|
+
// can be fed into btoa.
|
|
33
|
+
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(("0x" + p1))));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
APPErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: APPErrorHandler, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
APPErrorHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: APPErrorHandler });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: APPErrorHandler, decorators: [{
|
|
39
|
+
type: Injectable
|
|
40
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmVycm9yaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc2VydmljZXMvc3JjL2NsYXNzZXMvYXBwLmVycm9yaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFnQixVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQU96QyxNQUFNLE9BQU8sZUFBZTtJQUd4QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUksQ0FBQztJQUUzQyxXQUFXLENBQUMsS0FBSztRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJO1lBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUMsbUVBQW1FO1FBQ25FLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLCtEQUErRCxDQUFDLENBQUM7WUFDN0UsT0FBTztTQUNWO1FBRUQsMkpBQTJKO1FBQzNKLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUE7YUFDZixJQUFJLEtBQUssWUFBWSxpQkFBaUI7WUFDdkMsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7O1lBRXpCLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUVoSCxJQUFJLElBQUksR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBRztRQUNoQixnRUFBZ0U7UUFDaEUsNkRBQTZEO1FBQzdELHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFNLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFILENBQUM7OzRHQWpDUSxlQUFlO2dIQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7IEVudk9wdGlvbnMgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcblxyXG5kZWNsYXJlIHZhciBteWNvbmZpZzogRW52T3B0aW9uc1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQVBQRXJyb3JIYW5kbGVyIGltcGxlbWVudHMgRXJyb3JIYW5kbGVyIHtcclxuICAgIHByaXZhdGUgcm91dGVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7IH1cclxuXHJcbiAgICBoYW5kbGVFcnJvcihlcnJvcikge1xyXG4gICAgICAgIGlmICh0aGlzLnJvdXRlciA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XHJcblxyXG4gICAgICAgIC8vSWdub3JvIGV2ZW50dWFsaSBlcnJvcmkgZGkgamF2YXNjcmlwdCBxdWFuZG8gaWwgcmVkaXJlY3Qgw6ggYXR0aXZvXHJcbiAgICAgICAgaWYgKG15Y29uZmlnICYmIG15Y29uZmlnLnJlZGlyZWN0SW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkphdmFzY3JpcHQgZXJyb3Igb24gcmVkaXJlY3QgaW4gcHJvZ3Jlc3MsIGlnbm9yaW5nIHRoaXMgZXZlbnRcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vSW4gY2FzbyBpbyBhYmJpYSBpbXBvc3RhdG8gc3VjY2VzcmVzdWx0bWFuZGF0b3J5IG5lbGwnaHR0cHJlcXVlc3QgZSBxdWVzdGEgYWJiaWEgZGF0byBlcnJvcmUgdGlybyBmdW9yaSB1biBleGNlcHRpb24gY2hlIGRldidlc3NlcmUgbW9zdHJhdGEgY29tZSBzaSBkZXZlXHJcbiAgICAgICAgdmFyIG5ld0Vycm9yID0gXCJcIjtcclxuICAgICAgICBpZiAoIWVycm9yLm1lc3NhZ2UgJiYgIWVycm9yLnN0YWNrKVxyXG4gICAgICAgICAgICBuZXdFcnJvciA9IGVycm9yXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSlcclxuICAgICAgICAgICAgbmV3RXJyb3IgPSBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgbmV3RXJyb3IgPSBlcnJvci5zdGFjayAmJiBlcnJvci5zdGFjay5sZW5ndGggPiAxMDAwID8gZXJyb3Iuc3RhY2suc3Vic3RyaW5nKDAsIDk5OSkgKyBcIlsuLi5dXCIgOiBlcnJvci5zdGFjaztcclxuXHJcbiAgICAgICAgdmFyIHBhcnMgPSB7IGVycm9yTWVzc2FnZTogdGhpcy5iNjRFbmNvZGVVbmljb2RlKG5ld0Vycm9yKSwgZnJvbVVybDogdGhpcy5yb3V0ZXIudXJsIH07XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2FuZXJyXCIsIHBhcnNdKTtcclxuICAgIH1cclxuXHJcbiAgICBiNjRFbmNvZGVVbmljb2RlKHN0cikge1xyXG4gICAgICAgIC8vIGZpcnN0IHdlIHVzZSBlbmNvZGVVUklDb21wb25lbnQgdG8gZ2V0IHBlcmNlbnQtZW5jb2RlZCBVVEYtOCxcclxuICAgICAgICAvLyB0aGVuIHdlIGNvbnZlcnQgdGhlIHBlcmNlbnQgZW5jb2RpbmdzIGludG8gcmF3IGJ5dGVzIHdoaWNoXHJcbiAgICAgICAgLy8gY2FuIGJlIGZlZCBpbnRvIGJ0b2EuXHJcbiAgICAgICAgcmV0dXJuIGJ0b2EoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikucmVwbGFjZSgvJShbMC05QS1GXXsyfSkvZywgKG1hdGNoLCBwMSkgPT4gU3RyaW5nLmZyb21DaGFyQ29kZSg8YW55PihcIjB4XCIgKyBwMSkpKSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class OutZoneEventPlugin {
|
|
5
|
+
constructor(zone) {
|
|
6
|
+
this.zone = zone;
|
|
7
|
+
}
|
|
8
|
+
supports(eventName) {
|
|
9
|
+
return eventName.endsWith('out-zone');
|
|
10
|
+
}
|
|
11
|
+
addEventListener(element, eventName, originalHandler) {
|
|
12
|
+
let eventOriginalName = eventName.split('.')[0];
|
|
13
|
+
let standardHandler = (event) => originalHandler(event);
|
|
14
|
+
if (eventName.endsWith('out-zone'))
|
|
15
|
+
this.zone.runOutsideAngular(() => { element.addEventListener(eventOriginalName, standardHandler); });
|
|
16
|
+
else
|
|
17
|
+
element.addEventListener(eventOriginalName, standardHandler);
|
|
18
|
+
return () => element.removeEventListener(eventOriginalName, standardHandler);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
OutZoneEventPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OutZoneEventPlugin, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
OutZoneEventPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OutZoneEventPlugin, providedIn: 'root' });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OutZoneEventPlugin, decorators: [{
|
|
24
|
+
type: Injectable,
|
|
25
|
+
args: [{ providedIn: 'root' }]
|
|
26
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zZXJ2aWNlcy9zcmMvY2xhc3Nlcy9hcHAuZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBSSxDQUFDO0lBRXJDLFFBQVEsQ0FBQyxTQUFpQjtRQUN0QixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQW9CLEVBQUUsU0FBaUIsRUFBRSxlQUF5QjtRQUMvRSxJQUFJLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM5RCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBRXJHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUVoRSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNqRixDQUFDOzsrR0FqQlEsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FETCxNQUFNOzJGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE91dFpvbmVFdmVudFBsdWdpbiB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHsgfVxyXG5cclxuICAgIHN1cHBvcnRzKGV2ZW50TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50TmFtZS5lbmRzV2l0aCgnb3V0LXpvbmUnKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgb3JpZ2luYWxIYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcclxuICAgICAgICBsZXQgZXZlbnRPcmlnaW5hbE5hbWUgPSBldmVudE5hbWUuc3BsaXQoJy4nKVswXTtcclxuICAgICAgICBsZXQgc3RhbmRhcmRIYW5kbGVyID0gKGV2ZW50OiBFdmVudCkgPT4gb3JpZ2luYWxIYW5kbGVyKGV2ZW50KVxyXG4gICAgICAgIGlmIChldmVudE5hbWUuZW5kc1dpdGgoJ291dC16b25lJykpXHJcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7IGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE9yaWdpbmFsTmFtZSwgc3RhbmRhcmRIYW5kbGVyKTsgfSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRPcmlnaW5hbE5hbWUsIHN0YW5kYXJkSGFuZGxlcilcclxuXHJcbiAgICAgICAgcmV0dXJuICgpID0+IGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE9yaWdpbmFsTmFtZSwgc3RhbmRhcmRIYW5kbGVyKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { LocalizationService } from "@esfaenza/localizations";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class HTTPServiceExtensionsLoc extends LocalizationService {
|
|
5
|
+
constructor(injector) {
|
|
6
|
+
super(injector);
|
|
7
|
+
super.set("it->en", "Il Server sembra essere offline, prova a ricaricare la pagina", ["Server seems to be offline, try to reload this page"]);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
HTTPServiceExtensionsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensionsLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
11
|
+
HTTPServiceExtensionsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensionsLoc });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensionsLoc, decorators: [{
|
|
13
|
+
type: Injectable
|
|
14
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmh0dHBleHRlbnNpb25zLmxvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc2VydmljZXMvc3JjL2NsYXNzZXMvYXBwLmh0dHBleHRlbnNpb25zLmxvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUc5RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsbUJBQW1CO0lBQzdELFlBQVksUUFBa0I7UUFDMUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLCtEQUErRCxFQUFFLENBQUMscURBQXFELENBQUMsQ0FBQyxDQUFDO0lBQ2xKLENBQUM7O3FIQUpRLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEhUVFBTZXJ2aWNlRXh0ZW5zaW9uc0xvYyBleHRlbmRzIExvY2FsaXphdGlvblNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIklsIFNlcnZlciBzZW1icmEgZXNzZXJlIG9mZmxpbmUsIHByb3ZhIGEgcmljYXJpY2FyZSBsYSBwYWdpbmFcIiwgW1wiU2VydmVyIHNlZW1zIHRvIGJlIG9mZmxpbmUsIHRyeSB0byByZWxvYWQgdGhpcyBwYWdlXCJdKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
// Applicazione
|
|
4
|
+
import { HTTPServiceExtensionsLoc } from "./app.httpextensions.loc";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@esfaenza/localizations";
|
|
7
|
+
import * as i2 from "./app.accesstoken";
|
|
8
|
+
import * as i3 from "./app.state";
|
|
9
|
+
import * as i4 from "@angular/router";
|
|
10
|
+
import * as i5 from "@esfaenza/access-control";
|
|
11
|
+
import * as i6 from "@esfaenza/extensions";
|
|
12
|
+
export class HTTPServiceExtensions {
|
|
13
|
+
constructor(lc, tks, as, router, ac, msgs) {
|
|
14
|
+
this.lc = lc;
|
|
15
|
+
this.tks = tks;
|
|
16
|
+
this.as = as;
|
|
17
|
+
this.router = router;
|
|
18
|
+
this.ac = ac;
|
|
19
|
+
this.msgs = msgs;
|
|
20
|
+
this.lc = this.lc.generateFromType(HTTPServiceExtensionsLoc);
|
|
21
|
+
}
|
|
22
|
+
//Gestione Auth
|
|
23
|
+
retrieveAccessToken() {
|
|
24
|
+
return this.tks.getAccessToken().toString();
|
|
25
|
+
}
|
|
26
|
+
retrieveIdentity() {
|
|
27
|
+
return this.tks.getJaceIdentity();
|
|
28
|
+
}
|
|
29
|
+
//Gestione ridirezione al login / altre pagine
|
|
30
|
+
readRedirectingToLogin() {
|
|
31
|
+
return this.as.redirectingToLogin;
|
|
32
|
+
}
|
|
33
|
+
writeRedirectingToLogin(status) {
|
|
34
|
+
this.as.redirectingToLogin = status;
|
|
35
|
+
}
|
|
36
|
+
redirectToLogin() {
|
|
37
|
+
console.log("httpextensions: redirecting to login");
|
|
38
|
+
this.router.navigate(["login", { fromUrl: this.router.url }]);
|
|
39
|
+
}
|
|
40
|
+
readRedirectionStatus() {
|
|
41
|
+
return myconfig?.redirectInProgress;
|
|
42
|
+
}
|
|
43
|
+
writeRedirectionStatus(status) {
|
|
44
|
+
myconfig.redirectInProgress = status;
|
|
45
|
+
}
|
|
46
|
+
//Gestione error handling flag
|
|
47
|
+
readHandlingErrorStatus() {
|
|
48
|
+
return this.as.handlingError;
|
|
49
|
+
}
|
|
50
|
+
writeHandlingErrorStatus(status) {
|
|
51
|
+
this.as.handlingError = status;
|
|
52
|
+
}
|
|
53
|
+
// 444, se false passa a handleBlockingException
|
|
54
|
+
handleNotConfiguredException() {
|
|
55
|
+
if (this.ac.has("P:mdm_customize")) {
|
|
56
|
+
myconfig.redirectInProgress = true;
|
|
57
|
+
this.as.handlingError = false;
|
|
58
|
+
this.router.navigate(["pages/adm/tenantconfig"]);
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
// 400, 403, 404, 444
|
|
64
|
+
handleBlockingException(status, text) {
|
|
65
|
+
this.msgs.simpleError(status + ": " + text);
|
|
66
|
+
this.as.handlingError = false;
|
|
67
|
+
}
|
|
68
|
+
// Tutto quello che non è gestito da handleBlockingException
|
|
69
|
+
handleException(status, text) {
|
|
70
|
+
if (status == 503) {
|
|
71
|
+
this.msgs.simpleError(this.lc.loc("Il Server sembra essere offline, prova a ricaricare la pagina"));
|
|
72
|
+
this.as.handlingError = false;
|
|
73
|
+
}
|
|
74
|
+
else if (status == 542) {
|
|
75
|
+
this.msgs.simpleError(text);
|
|
76
|
+
this.as.handlingError = false;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
var st = btoa(encodeURIComponent(text).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(("0x" + p1))));
|
|
80
|
+
var pars = { statusCode: status, statusText: st, fromUrl: this.router.url };
|
|
81
|
+
this.router.navigate(["iserr", pars]);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
HTTPServiceExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions, deps: [{ token: i1.LocalizationService }, { token: i2.TokenService }, { token: i3.AppState }, { token: i4.Router }, { token: i5.AccessControlService }, { token: i6.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
86
|
+
HTTPServiceExtensions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions });
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions, decorators: [{
|
|
88
|
+
type: Injectable
|
|
89
|
+
}], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.TokenService }, { type: i3.AppState }, { type: i4.Router }, { type: i5.AccessControlService }, { type: i6.MessageService }]; } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmh0dHBleHRlbnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zZXJ2aWNlcy9zcmMvY2xhc3Nlcy9hcHAuaHR0cGV4dGVuc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTM0MsZUFBZTtBQUNmLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7OztBQVNwRSxNQUFNLE9BQU8scUJBQXFCO0lBRTlCLFlBQW9CLEVBQXVCLEVBQVUsR0FBaUIsRUFBVSxFQUFZLEVBQVUsTUFBYyxFQUFVLEVBQXdCLEVBQVUsSUFBb0I7UUFBaEssT0FBRSxHQUFGLEVBQUUsQ0FBcUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBVTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQWdCO1FBQ2hMLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7SUFFRCxlQUFlO0lBQ2YsbUJBQW1CO1FBQ2YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxnQkFBZ0I7UUFDWixPQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxzQkFBc0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0lBQ3RDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxNQUFlO1FBQ25DLElBQUksQ0FBQyxFQUFFLENB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YW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9hY2Nlc3MtY29udHJvbFwiO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZUV4dGVuc2lvbnMgfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBIVFRQU2VydmljZUV4dGVuc2lvbnNMb2MgfSBmcm9tIFwiLi9hcHAuaHR0cGV4dGVuc2lvbnMubG9jXCI7XHJcbmltcG9ydCB7IEFwcFN0YXRlIH0gZnJvbSBcIi4vYXBwLnN0YXRlXCI7XHJcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gXCIuL2FwcC5hY2Nlc3N0b2tlblwiO1xyXG5cclxuaW1wb3J0IHsgRW52T3B0aW9ucyB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuXHJcbmRlY2xhcmUgdmFyIG15Y29uZmlnOiBFbnZPcHRpb25zO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSFRUUFNlcnZpY2VFeHRlbnNpb25zIGltcGxlbWVudHMgSHR0cFNlcnZpY2VFeHRlbnNpb25zIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCBwcml2YXRlIHRrczogVG9rZW5TZXJ2aWNlLCBwcml2YXRlIGFzOiBBcHBTdGF0ZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIHByaXZhdGUgbXNnczogTWVzc2FnZVNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLmxjID0gdGhpcy5sYy5nZW5lcmF0ZUZyb21UeXBlKEhUVFBTZXJ2aWNlRXh0ZW5zaW9uc0xvYylcclxuICAgIH1cclxuXHJcbiAgICAvL0dlc3Rpb25lIEF1dGhcclxuICAgIHJldHJpZXZlQWNjZXNzVG9rZW4oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50a3MuZ2V0QWNjZXNzVG9rZW4oKS50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHJpZXZlSWRlbnRpdHkoKTogeyBJZFVzZXI6IHN0cmluZzsgSWR0ZW5hbnQ6IHN0cmluZzsgfSB7XHJcbiAgICAgICAgcmV0dXJuIDxhbnk+dGhpcy50a3MuZ2V0SmFjZUlkZW50aXR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9HZXN0aW9uZSByaWRpcmV6aW9uZSBhbCBsb2dpbiAvIGFsdHJlIHBhZ2luZVxyXG4gICAgcmVhZFJlZGlyZWN0aW5nVG9Mb2dpbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcy5yZWRpcmVjdGluZ1RvTG9naW47XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVSZWRpcmVjdGluZ1RvTG9naW4oc3RhdHVzOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5hcy5yZWRpcmVjdGluZ1RvTG9naW4gPSBzdGF0dXM7XHJcbiAgICB9XHJcblxyXG4gICAgcmVkaXJlY3RUb0xvZ2luKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiaHR0cGV4dGVuc2lvbnM6IHJlZGlyZWN0aW5nIHRvIGxvZ2luXCIpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImxvZ2luXCIsIHsgZnJvbVVybDogdGhpcy5yb3V0ZXIudXJsIH1dKTtcclxuICAgIH1cclxuXHJcbiAgICByZWFkUmVkaXJlY3Rpb25TdGF0dXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG15Y29uZmlnPy5yZWRpcmVjdEluUHJvZ3Jlc3M7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVSZWRpcmVjdGlvblN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MgPSBzdGF0dXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy9HZXN0aW9uZSBlcnJvciBoYW5kbGluZyBmbGFnXHJcbiAgICByZWFkSGFuZGxpbmdFcnJvclN0YXR1cygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcy5oYW5kbGluZ0Vycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlSGFuZGxpbmdFcnJvclN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmFzLmhhbmRsaW5nRXJyb3IgPSBzdGF0dXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gNDQ0LCBzZSBmYWxzZSBwYXNzYSBhIGhhbmRsZUJsb2NraW5nRXhjZXB0aW9uXHJcbiAgICBoYW5kbGVOb3RDb25maWd1cmVkRXhjZXB0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFjLmhhcyhcIlA6bWRtX2N1c3RvbWl6ZVwiKSkge1xyXG4gICAgICAgICAgICBteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmFzLmhhbmRsaW5nRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicGFnZXMvYWRtL3RlbmFudGNvbmZpZ1wiXSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDQwMCwgNDAzLCA0MDQsIDQ0NFxyXG4gICAgaGFuZGxlQmxvY2tpbmdFeGNlcHRpb24oc3RhdHVzOiBudW1iZXIsIHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubXNncy5zaW1wbGVFcnJvcihzdGF0dXMgKyBcIjogXCIgKyB0ZXh0KVxyXG4gICAgICAgIHRoaXMuYXMuaGFuZGxpbmdFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFR1dHRvIHF1ZWxsbyBjaGUgbm9uIMOoIGdlc3RpdG8gZGEgaGFuZGxlQmxvY2tpbmdFeGNlcHRpb25cclxuICAgIGhhbmRsZUV4Y2VwdGlvbihzdGF0dXM6IG51bWJlciwgdGV4dDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHN0YXR1cyA9PSA1MDMpIHtcclxuICAgICAgICAgICAgdGhpcy5tc2dzLnNpbXBsZUVycm9yKHRoaXMubGMubG9jKFwiSWwgU2VydmVyIHNlbWJyYSBlc3NlcmUgb2ZmbGluZSwgcHJvdmEgYSByaWNhcmljYXJlIGxhIHBhZ2luYVwiKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXMuaGFuZGxpbmdFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT0gNTQyKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXNncy5zaW1wbGVFcnJvcih0ZXh0KTtcclxuICAgICAgICAgICAgdGhpcy5hcy5oYW5kbGluZ0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgc3QgPSBidG9hKGVuY29kZVVSSUNvbXBvbmVudCh0ZXh0KS5yZXBsYWNlKC8lKFswLTlBLUZdezJ9KS9nLCAobWF0Y2gsIHAxKSA9PiBTdHJpbmcuZnJvbUNoYXJDb2RlKDxhbnk+KFwiMHhcIiArIHAxKSkpKTtcclxuICAgICAgICAgICAgdmFyIHBhcnMgPSB7IHN0YXR1c0NvZGU6IHN0YXR1cywgc3RhdHVzVGV4dDogc3QsIGZyb21Vcmw6IHRoaXMucm91dGVyLnVybCB9O1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJpc2VyclwiLCBwYXJzXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
// Configurazioni
|
|
4
|
+
import { AccessControlRouteGuard } from "@esfaenza/access-control";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@esfaenza/extensions";
|
|
7
|
+
import * as i2 from "@esfaenza/access-control";
|
|
8
|
+
import * as i3 from "@angular/router";
|
|
9
|
+
import * as i4 from "./app.accesstoken";
|
|
10
|
+
export class BaseRouterGuard extends AccessControlRouteGuard {
|
|
11
|
+
constructor(ms, acc, router, ts) {
|
|
12
|
+
super(ms, acc, router);
|
|
13
|
+
if (!acc.Initialized)
|
|
14
|
+
acc.initializeIdentity(ts.getJaceIdentity());
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
BaseRouterGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard, deps: [{ token: i1.MessageService }, { token: i2.AccessControlService }, { token: i3.Router }, { token: i4.TokenService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18
|
+
BaseRouterGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard, decorators: [{
|
|
20
|
+
type: Injectable
|
|
21
|
+
}], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.AccessControlService }, { type: i3.Router }, { type: i4.TokenService }]; } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnJvdXRlZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NlcnZpY2VzL3NyYy9jbGFzc2VzL2FwcC5yb3V0ZWd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsdUJBQXVCLEVBQXdCLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQU16RixNQUFNLE9BQU8sZUFBZ0IsU0FBUSx1QkFBdUI7SUFDeEQsWUFBWSxFQUFrQixFQUFFLEdBQXlCLEVBQUUsTUFBYyxFQUFFLEVBQWdCO1FBQ3ZGLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXZCLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVztZQUNoQixHQUFHLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQzs7NEdBTlEsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sUm91dGVHdWFyZCwgQWNjZXNzQ29udHJvbFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG5pbXBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tIFwiLi9hcHAuYWNjZXNzdG9rZW5cIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhc2VSb3V0ZXJHdWFyZCBleHRlbmRzIEFjY2Vzc0NvbnRyb2xSb3V0ZUd1YXJkIHtcclxuICAgIGNvbnN0cnVjdG9yKG1zOiBNZXNzYWdlU2VydmljZSwgYWNjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgcm91dGVyOiBSb3V0ZXIsIHRzOiBUb2tlblNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihtcywgYWNjLCByb3V0ZXIpO1xyXG5cclxuICAgICAgICBpZiAoIWFjYy5Jbml0aWFsaXplZClcclxuICAgICAgICAgICAgYWNjLmluaXRpYWxpemVJZGVudGl0eSh0cy5nZXRKYWNlSWRlbnRpdHkoKSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./app.accesstoken";
|
|
5
|
+
import * as i2 from "@angular/router";
|
|
6
|
+
export class SessionRetriever {
|
|
7
|
+
constructor(bts, router) {
|
|
8
|
+
this.bts = bts;
|
|
9
|
+
this.router = router;
|
|
10
|
+
}
|
|
11
|
+
/** Tenant§Account§User§ModuleId */
|
|
12
|
+
getSessionKey() {
|
|
13
|
+
if (this.SessionIdentity)
|
|
14
|
+
return this.SessionIdentity;
|
|
15
|
+
// Se non ho un id mi manca il login, quindi via di qua
|
|
16
|
+
var id = this.bts.getJaceIdentity();
|
|
17
|
+
if (!id) {
|
|
18
|
+
console.log("no identity, redirecting to login");
|
|
19
|
+
this.router.navigate(["login"]);
|
|
20
|
+
return "";
|
|
21
|
+
}
|
|
22
|
+
// TODO: FUCK THIS SHIT
|
|
23
|
+
this.SessionIdentity = "" + id.Idtenant + "§" + id.IdAccount + "§" + id.IdUser + "§" + "metering";
|
|
24
|
+
return this.SessionIdentity;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
SessionRetriever.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, deps: [{ token: i1.TokenService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
+
SessionRetriever.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, providedIn: "root" });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, decorators: [{
|
|
30
|
+
type: Injectable,
|
|
31
|
+
args: [{ providedIn: "root" }]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i1.TokenService }, { type: i2.Router }]; } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NlcnZpY2VzL3NyYy9jbGFzc2VzL2FwcC5zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBVTNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFJekIsWUFBb0IsR0FBaUIsRUFBVSxNQUFjO1FBQXpDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUksQ0FBQztJQUVsRSxtQ0FBbUM7SUFDbkMsYUFBYTtRQUNULElBQUksSUFBSSxDQUFDLGVBQWU7WUFDcEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRWhDLHVEQUF1RDtRQUN2RCxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUE7WUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsVUFBVSxDQUFDO1FBQ2xHLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDOzs2R0F0QlEsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FESCxNQUFNOzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgQmFzZVNlc3Npb25SZXRyaWV2ZXIgfSBmcm9tIFwiQGVzZmFlbnphL3ByZWZlcmVuY2VzXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgVG9rZW5TZXJ2aWNlIH0gZnJvbSBcIi4vYXBwLmFjY2Vzc3Rva2VuXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uUmV0cmlldmVyIGltcGxlbWVudHMgQmFzZVNlc3Npb25SZXRyaWV2ZXIge1xyXG5cclxuICAgIHByaXZhdGUgU2Vzc2lvbklkZW50aXR5OiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBidHM6IFRva2VuU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikgeyB9XHJcblxyXG4gICAgLyoqIFRlbmFudMKnQWNjb3VudMKnVXNlcsKnTW9kdWxlSWQgKi9cclxuICAgIGdldFNlc3Npb25LZXkoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5TZXNzaW9uSWRlbnRpdHkpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLlNlc3Npb25JZGVudGl0eTtcclxuXHJcbiAgICAgICAgLy8gU2Ugbm9uIGhvIHVuIGlkIG1pIG1hbmNhIGlsIGxvZ2luLCBxdWluZGkgdmlhIGRpIHF1YVxyXG4gICAgICAgIHZhciBpZCA9IHRoaXMuYnRzLmdldEphY2VJZGVudGl0eSgpO1xyXG4gICAgICAgIGlmICghaWQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJubyBpZGVudGl0eSwgcmVkaXJlY3RpbmcgdG8gbG9naW5cIilcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibG9naW5cIl0pO1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRPRE86IEZVQ0sgVEhJUyBTSElUXHJcbiAgICAgICAgdGhpcy5TZXNzaW9uSWRlbnRpdHkgPSBcIlwiICsgaWQuSWR0ZW5hbnQgKyBcIsKnXCIgKyBpZC5JZEFjY291bnQgKyBcIsKnXCIgKyBpZC5JZFVzZXIgKyBcIsKnXCIgKyBcIm1ldGVyaW5nXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuU2Vzc2lvbklkZW50aXR5O1xyXG4gICAgfVxyXG59Il19
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
// Configurazioni
|
|
3
|
+
import { InboundMessageTypes } from "@esfaenza/extensions";
|
|
4
|
+
import { AdmMessageTypes, MK_ADM } from "@esfaenza/admin-module";
|
|
5
|
+
// Direttive, Componenti, Librerie
|
|
6
|
+
import * as customParseFormat from 'dayjs/plugin/customParseFormat';
|
|
7
|
+
import * as isBetween from 'dayjs/plugin/isBetween';
|
|
8
|
+
import * as minMax from 'dayjs/plugin/minMax';
|
|
9
|
+
import * as utc from 'dayjs/plugin/utc';
|
|
10
|
+
import { Subject } from "rxjs";
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@esfaenza/localizations";
|
|
13
|
+
import * as i2 from "./app.accesstoken";
|
|
14
|
+
import * as i3 from "@esfaenza/signalr-notifications";
|
|
15
|
+
import * as i4 from "@esfaenza/extensions";
|
|
16
|
+
export class AppState {
|
|
17
|
+
constructor(lc, bts, notifications, MessageDef, intercom) {
|
|
18
|
+
this.lc = lc;
|
|
19
|
+
this.bts = bts;
|
|
20
|
+
this.notifications = notifications;
|
|
21
|
+
this.MessageDef = MessageDef;
|
|
22
|
+
this.intercom = intercom;
|
|
23
|
+
this.Embedded = false;
|
|
24
|
+
this.redirectingToLogin = false;
|
|
25
|
+
this.handlingError = false;
|
|
26
|
+
this.christmasTime = false;
|
|
27
|
+
this.halloweenTime = false;
|
|
28
|
+
this.jobsInProgress = 0;
|
|
29
|
+
this.allJobs = [];
|
|
30
|
+
this.jobWithIdsCache = {};
|
|
31
|
+
this.notifyOnCompletedJobs = true;
|
|
32
|
+
this._data = new Subject();
|
|
33
|
+
this._dataStream$ = this._data.asObservable();
|
|
34
|
+
this._subscriptions = new Map();
|
|
35
|
+
this.ModulesLocalizations = {};
|
|
36
|
+
this.setupDayjs();
|
|
37
|
+
this.setupSignalRJobListening();
|
|
38
|
+
this.JaceIdentity = null;
|
|
39
|
+
this._dataStream$.subscribe((data) => this._onEvent(data));
|
|
40
|
+
//Decide se siamo attorno a natale
|
|
41
|
+
var today = dayjs();
|
|
42
|
+
var lowerBound = dayjs("18/12/" + today.year(), "DD/MM/YYYY");
|
|
43
|
+
var upperBound = dayjs("07/01/" + (today.year() + 1), "DD/MM/YYYY");
|
|
44
|
+
this.christmasTime = today > lowerBound && today < upperBound;
|
|
45
|
+
//Decide se siamo attorno ad halloween
|
|
46
|
+
var lowerBound = dayjs("28/10/" + today.year(), "DD/MM/YYYY");
|
|
47
|
+
var upperBound = dayjs("05/11/" + today.year(), "DD/MM/YYYY");
|
|
48
|
+
this.halloweenTime = today > lowerBound && today < upperBound;
|
|
49
|
+
this.intercom.inbounds.subscribe((t) => { this.handleInboundMessage(t); });
|
|
50
|
+
}
|
|
51
|
+
registerNavigation(route) {
|
|
52
|
+
let title = route.data["title"];
|
|
53
|
+
let internal = route.data["internalNavigation"];
|
|
54
|
+
/*
|
|
55
|
+
* Parent ({url: [{path: "{module}"}]})
|
|
56
|
+
* Parent ({url: [{path: ""}]}) (Root del modulo lazy)
|
|
57
|
+
* -> Navigazione attuale <-
|
|
58
|
+
*/
|
|
59
|
+
let module = route.parent?.parent?.url[0]?.path;
|
|
60
|
+
let loc = module ? this.ModulesLocalizations[module] : null;
|
|
61
|
+
if (!module)
|
|
62
|
+
console.error("Impossibile estrapolare il modulo dalla navigazione (Atteso Modulo al secondo livello di parentela partendo dal componente attuale): " + route.pathFromRoot.map(v => v.url.map(segment => segment.toString()).join('/')).join('/'));
|
|
63
|
+
this.notifyDataChanged(internal ? "menu.adjustSubNavigationTo" : "menu.adjustNavigationTo", loc ? loc.loc(title) : title);
|
|
64
|
+
}
|
|
65
|
+
handleInboundMessage(t) {
|
|
66
|
+
switch (t.type) {
|
|
67
|
+
case InboundMessageTypes.Navigation:
|
|
68
|
+
{
|
|
69
|
+
this.notifyDataChanged(t.message.sub ? "menu.adjustSubNavigationTo" : "menu.adjustNavigationTo", t.message.routeTitle);
|
|
70
|
+
this.intercom.send(AdmMessageTypes.Message, "Navigation Message Received", MK_ADM);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
setupDayjs() {
|
|
75
|
+
dayjs.extend(customParseFormat);
|
|
76
|
+
dayjs.extend(minMax);
|
|
77
|
+
dayjs.extend(isBetween);
|
|
78
|
+
dayjs.extend(utc);
|
|
79
|
+
// Require e collegamento con la localizzazione per dayjs
|
|
80
|
+
import("dayjs/locale/" + this.lc.SmallLocale + ".js").then(locale => {
|
|
81
|
+
dayjs.locale(locale);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
setupSignalRJobListening() {
|
|
85
|
+
this.notifications.observe(this.MessageDef.IN_JobProgressNotification).subscribe((ev) => {
|
|
86
|
+
var desc = ev.description + " (" + ev.user + ")";
|
|
87
|
+
let job = {
|
|
88
|
+
id: ev.instance,
|
|
89
|
+
description: desc,
|
|
90
|
+
smalldescription: desc.length > 35 ? desc.substring(0, 30) + "..." : desc,
|
|
91
|
+
percentage: this.roundToTwo(ev.progress),
|
|
92
|
+
completed: ev.type == 'Completed',
|
|
93
|
+
fileid: ev.resultfile,
|
|
94
|
+
reportid: ev.resultreport,
|
|
95
|
+
reportpars: ev.resultreportparams,
|
|
96
|
+
complexreportid: ev.resultcomplexreport
|
|
97
|
+
};
|
|
98
|
+
switch (ev.type) {
|
|
99
|
+
case "Started":
|
|
100
|
+
this.jobWithIdsCache[ev.instance] = job;
|
|
101
|
+
this.allJobs.splice(0, 0, job);
|
|
102
|
+
break;
|
|
103
|
+
case "Progress":
|
|
104
|
+
// Se mi arriva un progress di un job che non ho significa che mi sono loggato ora con dei Job in corso
|
|
105
|
+
// quindi per prima cosa devo metterlo in lista
|
|
106
|
+
if (!this.jobWithIdsCache[ev.instance]) {
|
|
107
|
+
this.jobWithIdsCache[ev.instance] = job;
|
|
108
|
+
this.allJobs.splice(0, 0, job);
|
|
109
|
+
}
|
|
110
|
+
this.jobWithIdsCache[ev.instance].percentage = this.roundToTwo(ev.progress);
|
|
111
|
+
break;
|
|
112
|
+
case "Completed":
|
|
113
|
+
if (!this.jobWithIdsCache[ev.instance]) {
|
|
114
|
+
this.jobWithIdsCache[ev.instance] = job;
|
|
115
|
+
this.allJobs.splice(0, 0, job);
|
|
116
|
+
}
|
|
117
|
+
var jobToUpdate = this.jobWithIdsCache[ev.instance];
|
|
118
|
+
jobToUpdate.percentage = 100;
|
|
119
|
+
jobToUpdate.fileid = ev.resultfile;
|
|
120
|
+
jobToUpdate.reportid = ev.resultreport;
|
|
121
|
+
jobToUpdate.reportpars = ev.resultreportparams;
|
|
122
|
+
jobToUpdate.completed = true;
|
|
123
|
+
if (this.notifyOnCompletedJobs)
|
|
124
|
+
this.notifyDataChanged("app.completedJob", jobToUpdate.description);
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
this.jobsInProgress = this.allJobs.filter(t => !t.completed).length;
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
roundToTwo(num) {
|
|
131
|
+
return Math.round(num * 100) / 100;
|
|
132
|
+
}
|
|
133
|
+
getJaceIDentity() {
|
|
134
|
+
if (this.JaceIdentity)
|
|
135
|
+
return this.JaceIdentity;
|
|
136
|
+
this.JaceIdentity = this.bts.getJaceIdentity();
|
|
137
|
+
return this.JaceIdentity;
|
|
138
|
+
}
|
|
139
|
+
notifyDataChanged(event, value) {
|
|
140
|
+
this._data[event] = value;
|
|
141
|
+
this._data.next({
|
|
142
|
+
event: event,
|
|
143
|
+
data: this._data[event]
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
subscribe(event, callback) {
|
|
147
|
+
var subscribers = this._subscriptions.get(event) || [];
|
|
148
|
+
subscribers.push(callback);
|
|
149
|
+
this._subscriptions.set(event, subscribers);
|
|
150
|
+
}
|
|
151
|
+
_onEvent(data) {
|
|
152
|
+
var subscribers = this._subscriptions.get(data["event"]) || [];
|
|
153
|
+
subscribers.forEach((callback) => {
|
|
154
|
+
callback.call(null, data["data"]);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
setSidebarWidth(width) {
|
|
158
|
+
this.sidebarWidth = width;
|
|
159
|
+
}
|
|
160
|
+
setHeaderHeight(height) {
|
|
161
|
+
this.headerHeight = height;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
AppState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, deps: [{ token: i1.LocalizationService }, { token: i2.TokenService }, { token: i3.NotificationsService }, { token: i3.BaseMessageService }, { token: i4.InterComService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
165
|
+
AppState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, providedIn: "root" });
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, decorators: [{
|
|
167
|
+
type: Injectable,
|
|
168
|
+
args: [{ providedIn: "root" }]
|
|
169
|
+
}], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.TokenService }, { type: i3.NotificationsService }, { type: i3.BaseMessageService }, { type: i4.InterComService }]; } });
|
|
170
|
+
export class ApplicationJob {
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zZXJ2aWNlcy9zcmMvY2xhc3Nlcy9hcHAuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFvQyxNQUFNLHNCQUFzQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFPakUsa0NBQWtDO0FBQ2xDLE9BQU8sS0FBSyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEtBQUssU0FBUyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxNQUFNLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFLL0IsTUFBTSxPQUFPLFFBQVE7SUE2QmpCLFlBQW9CLEVBQXVCLEVBQVUsR0FBaUIsRUFBVSxhQUFtQyxFQUFVLFVBQThCLEVBQVUsUUFBeUI7UUFBMUssT0FBRSxHQUFGLEVBQUUsQ0FBcUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQTNCdkwsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUkxQix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFRL0IsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0Is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QUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFTSxlQUFlLENBQUMsTUFBYztRQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUMvQixDQUFDOztxR0FyTFEsUUFBUTt5R0FBUixRQUFRLGNBREssTUFBTTsyRkFDbkIsUUFBUTtrQkFEcEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBeUxsQyxNQUFNLE9BQU8sY0FBYztDQVUxQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBJbmJvdW5kTWVzc2FnZVR5cGVzLCBJbnRlckNvbU1lc3NhZ2UsIEludGVyQ29tU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBKb2JQcm9ncmVzc0R0byB9IGZyb20gXCJAZXNmYWVuemEvc2lnbmFsci1ub3RpZmljYXRpb25zXCI7XHJcbmltcG9ydCB7IEFkbU1lc3NhZ2VUeXBlcywgTUtfQURNIH0gZnJvbSBcIkBlc2ZhZW56YS9hZG1pbi1tb2R1bGVcIjtcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBSZXBvcnRQYXJhbSB9IGZyb20gXCJAZXNmYWVuemEvZXMtdGFibGVcIjtcclxuaW1wb3J0IHsgVG9rZW5TZXJ2aWNlIH0gZnJvbSBcIi4vYXBwLmFjY2Vzc3Rva2VuXCI7XHJcblxyXG5pbXBvcnQgeyBKYWNlSWRlbnRpdHkgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcblxyXG4vLyBEaXJldHRpdmUsIENvbXBvbmVudGksIExpYnJlcmllXHJcbmltcG9ydCAqIGFzIGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XHJcbmltcG9ydCAqIGFzIGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcclxuaW1wb3J0ICogYXMgbWluTWF4IGZyb20gJ2RheWpzL3BsdWdpbi9taW5NYXgnO1xyXG5pbXBvcnQgKiBhcyB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgZGF5anM6IGFueTtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcclxuZXhwb3J0IGNsYXNzIEFwcFN0YXRlIHtcclxuXHJcbiAgICBwdWJsaWMgRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgc2lkZWJhcldpZHRoOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaGVhZGVySGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgcmVkaXJlY3RpbmdUb0xvZ2luOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGFuZGxpbmdFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNocmlzdG1hc1RpbWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBoYWxsb3dlZW5UaW1lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8gVE9ETzogZm9yIHRoZSBnbG9yeSBvZiBtZW1lc1xyXG4gICAgLy9wdWJsaWMgbWVtZXM6IGJvb2xlYW4gPSAoKG5ldyBEYXRlKCkpLmdldE1vbnRoKCkgPT0gMyAmJiAobmV3IERhdGUoKSkuZ2V0RGF0ZSgpID09IDEpIHx8ICg8YW55Pm15Y29uZmlnKS5NRU1FUztcclxuXHJcbiAgICBwcml2YXRlIEphY2VJZGVudGl0eTogSmFjZUlkZW50aXR5O1xyXG5cclxuICAgIHByaXZhdGUgbXNnRGVmOiBCYXNlTWVzc2FnZVNlcnZpY2U7XHJcbiAgICBwdWJsaWMgam9ic0luUHJvZ3Jlc3M6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgYWxsSm9iczogQXBwbGljYXRpb25Kb2JbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBqb2JXaXRoSWRzQ2FjaGU6IHsgW2luZGV4OiBzdHJpbmddOiBBcHBsaWNhdGlvbkpvYiB9ID0ge307XHJcbiAgICBwdWJsaWMgbm90aWZ5T25Db21wbGV0ZWRKb2JzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBwcml2YXRlIF9kYXRhID0gbmV3IFN1YmplY3Q8T2JqZWN0PigpO1xyXG4gICAgcHJpdmF0ZSBfZGF0YVN0cmVhbSQgPSB0aGlzLl9kYXRhLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IE1hcDxzdHJpbmcsIEFycmF5PEZ1bmN0aW9uPj4gPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8RnVuY3Rpb24+PigpO1xyXG5cclxuICAgIHB1YmxpYyBNb2R1bGVzTG9jYWxpemF0aW9uczogeyBbaWQ6IHN0cmluZ106IExvY2FsaXphdGlvblNlcnZpY2UgfSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIHByaXZhdGUgYnRzOiBUb2tlblNlcnZpY2UsIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsIHByaXZhdGUgTWVzc2FnZURlZjogQmFzZU1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGludGVyY29tOiBJbnRlckNvbVNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLnNldHVwRGF5anMoKTtcclxuICAgICAgICB0aGlzLnNldHVwU2lnbmFsUkpvYkxpc3RlbmluZygpO1xyXG5cclxuICAgICAgICB0aGlzLkphY2VJZGVudGl0eSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fZGF0YVN0cmVhbSQuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLl9vbkV2ZW50KGRhdGEpKTtcclxuXHJcbiAgICAgICAgLy9EZWNpZGUgc2Ugc2lhbW8gYXR0b3JubyBhIG5hdGFsZVxyXG4gICAgICAgIHZhciB0b2RheSA9IGRheWpzKCk7XHJcbiAgICAgICAgdmFyIGxvd2VyQm91bmQgPSBkYXlqcyhcIjE4LzEyL1wiICsgdG9kYXkueWVhcigpLCBcIkREL01NL1lZWVlcIik7XHJcbiAgICAgICAgdmFyIHVwcGVyQm91bmQgPSBkYXlqcyhcIjA3LzAxL1wiICsgKHRvZGF5LnllYXIoKSArIDEpLCBcIkREL01NL1lZWVlcIik7XHJcbiAgICAgICAgdGhpcy5jaHJpc3RtYXNUaW1lID0gdG9kYXkgPiBsb3dlckJvdW5kICYmIHRvZGF5IDwgdXBwZXJCb3VuZDtcclxuXHJcbiAgICAgICAgLy9EZWNpZGUgc2Ugc2lhbW8gYXR0b3JubyBhZCBoYWxsb3dlZW5cclxuICAgICAgICB2YXIgbG93ZXJCb3VuZCA9IGRheWpzKFwiMjgvMTAvXCIgKyB0b2RheS55ZWFyKCksIFwiREQvTU0vWVlZWVwiKTtcclxuICAgICAgICB2YXIgdXBwZXJCb3VuZCA9IGRheWpzKFwiMDUvMTEvXCIgKyB0b2RheS55ZWFyKCksIFwiREQvTU0vWVlZWVwiKTtcclxuICAgICAgICB0aGlzLmhhbGxvd2VlblRpbWUgPSB0b2RheSA+IGxvd2VyQm91bmQgJiYgdG9kYXkgPCB1cHBlckJvdW5kO1xyXG5cclxuICAgICAgICB0aGlzLmludGVyY29tLmluYm91bmRzLnN1YnNjcmliZSgodDogSW50ZXJDb21NZXNzYWdlKSA9PiB7IHRoaXMuaGFuZGxlSW5ib3VuZE1lc3NhZ2UodCk7IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyTmF2aWdhdGlvbihyb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcclxuICAgICAgICBsZXQgdGl0bGUgPSByb3V0ZS5kYXRhW1widGl0bGVcIl07XHJcbiAgICAgICAgbGV0IGludGVybmFsID0gcm91dGUuZGF0YVtcImludGVybmFsTmF2aWdhdGlvblwiXVxyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICAqICBQYXJlbnQgKHt1cmw6IFt7cGF0aDogXCJ7bW9kdWxlfVwifV19KVxyXG4gICAgICAgICAqICAgICAgUGFyZW50ICh7dXJsOiBbe3BhdGg6IFwiXCJ9XX0pIChSb290IGRlbCBtb2R1bG8gbGF6eSlcclxuICAgICAgICAgKiAgICAgICAgICAtPiBOYXZpZ2F6aW9uZSBhdHR1YWxlIDwtXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgbGV0IG1vZHVsZSA9IHJvdXRlLnBhcmVudD8ucGFyZW50Py51cmxbMF0/LnBhdGg7XHJcbiAgICAgICAgbGV0IGxvYyA9IG1vZHVsZSA/IHRoaXMuTW9kdWxlc0xvY2FsaXphdGlvbnNbbW9kdWxlXSA6IG51bGw7XHJcblxyXG4gICAgICAgIGlmICghbW9kdWxlKVxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiSW1wb3NzaWJpbGUgZXN0cmFwb2xhcmUgaWwgbW9kdWxvIGRhbGxhIG5hdmlnYXppb25lIChBdHRlc28gTW9kdWxvIGFsIHNlY29uZG8gbGl2ZWxsbyBkaSBwYXJlbnRlbGEgcGFydGVuZG8gZGFsIGNvbXBvbmVudGUgYXR0dWFsZSk6IFwiICsgcm91dGUucGF0aEZyb21Sb290Lm1hcCh2ID0+IHYudXJsLm1hcChzZWdtZW50ID0+IHNlZ21lbnQudG9TdHJpbmcoKSkuam9pbignLycpKS5qb2luKCcvJykpO1xyXG5cclxuICAgICAgICB0aGlzLm5vdGlmeURhdGFDaGFuZ2VkKGludGVybmFsID8gXCJtZW51LmFkanVzdFN1Yk5hdmlnYXRpb25Ub1wiIDogXCJtZW51LmFkanVzdE5hdmlnYXRpb25Ub1wiLCBsb2MgPyBsb2MubG9jKHRpdGxlKSA6IHRpdGxlKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVJbmJvdW5kTWVzc2FnZSh0OiBJbnRlckNvbU1lc3NhZ2UpIHtcclxuICAgICAgICBzd2l0Y2ggKHQudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIEluYm91bmRNZXNzYWdlVHlwZXMuTmF2aWdhdGlvbjpcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeURhdGFDaGFuZ2VkKHQubWVzc2FnZS5zdWIgPyBcIm1lbnUuYWRqdXN0U3ViTmF2aWdhdGlvblRvXCIgOiBcIm1lbnUuYWRqdXN0TmF2aWdhdGlvblRvXCIsIHQubWVzc2FnZS5yb3V0ZVRpdGxlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVyY29tLnNlbmQoQWRtTWVzc2FnZVR5cGVzLk1lc3NhZ2UsIFwiTmF2aWdhdGlvbiBNZXNzYWdlIFJlY2VpdmVkXCIsIE1LX0FETSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldHVwRGF5anMoKSB7XHJcbiAgICAgICAgZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcclxuICAgICAgICBkYXlqcy5leHRlbmQobWluTWF4KTtcclxuICAgICAgICBkYXlqcy5leHRlbmQoaXNCZXR3ZWVuKTtcclxuICAgICAgICBkYXlqcy5leHRlbmQodXRjKTtcclxuXHJcbiAgICAgICAgLy8gUmVxdWlyZSBlIGNvbGxlZ2FtZW50byBjb24gbGEgbG9jYWxpenphemlvbmUgcGVyIGRheWpzXHJcbiAgICAgICAgaW1wb3J0KFwiZGF5anMvbG9jYWxlL1wiICsgdGhpcy5sYy5TbWFsbExvY2FsZSArIFwiLmpzXCIpLnRoZW4obG9jYWxlID0+IHtcclxuICAgICAgICAgICAgZGF5anMubG9jYWxlKGxvY2FsZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBTaWduYWxSSm9iTGlzdGVuaW5nKCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5vYnNlcnZlKHRoaXMuTWVzc2FnZURlZi5JTl9Kb2JQcm9ncmVzc05vdGlmaWNhdGlvbikuc3Vic2NyaWJlKChldjogSm9iUHJvZ3Jlc3NEdG8pID0+IHtcclxuICAgICAgICAgICAgdmFyIGRlc2MgPSBldi5kZXNjcmlwdGlvbiArIFwiIChcIiArIGV2LnVzZXIgKyBcIilcIjtcclxuICAgICAgICAgICAgbGV0IGpvYjogQXBwbGljYXRpb25Kb2IgPSB7XHJcbiAgICAgICAgICAgICAgICBpZDogZXYuaW5zdGFuY2UsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzYyxcclxuICAgICAgICAgICAgICAgIHNtYWxsZGVzY3JpcHRpb246IGRlc2MubGVuZ3RoID4gMzUgPyBkZXNjLnN1YnN0cmluZygwLCAzMCkgKyBcIi4uLlwiIDogZGVzYyxcclxuICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IHRoaXMucm91bmRUb1R3byhldi5wcm9ncmVzcyksXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IGV2LnR5cGUgPT0gJ0NvbXBsZXRlZCcsXHJcbiAgICAgICAgICAgICAgICBmaWxlaWQ6IGV2LnJlc3VsdGZpbGUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRpZDogZXYucmVzdWx0cmVwb3J0LFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0cGFyczogZXYucmVzdWx0cmVwb3J0cGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgY29tcGxleHJlcG9ydGlkOiBldi5yZXN1bHRjb21wbGV4cmVwb3J0XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGV2LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJTdGFydGVkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5qb2JXaXRoSWRzQ2FjaGVbZXYuaW5zdGFuY2VdID0gam9iO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsSm9icy5zcGxpY2UoMCwgMCwgam9iKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJQcm9ncmVzc1wiOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFNlIG1pIGFycml2YSB1biBwcm9ncmVzcyBkaSB1biBqb2IgY2hlIG5vbiBobyBzaWduaWZpY2EgY2hlIG1pIHNvbm8gbG9nZ2F0byBvcmEgY29uIGRlaSBKb2IgaW4gY29yc29cclxuICAgICAgICAgICAgICAgICAgICAvLyBxdWluZGkgcGVyIHByaW1hIGNvc2EgZGV2byBtZXR0ZXJsbyBpbiBsaXN0YVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5qb2JXaXRoSWRzQ2FjaGVbZXYuaW5zdGFuY2VdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuam9iV2l0aElkc0NhY2hlW2V2Lmluc3RhbmNlXSA9IGpvYjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxKb2JzLnNwbGljZSgwLCAwLCBqb2IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmpvYldpdGhJZHNDYWNoZVtldi5pbnN0YW5jZV0ucGVyY2VudGFnZSA9IHRoaXMucm91bmRUb1R3byhldi5wcm9ncmVzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiQ29tcGxldGVkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmpvYldpdGhJZHNDYWNoZVtldi5pbnN0YW5jZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5qb2JXaXRoSWRzQ2FjaGVbZXYuaW5zdGFuY2VdID0gam9iO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbEpvYnMuc3BsaWNlKDAsIDAsIGpvYik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBqb2JUb1VwZGF0ZSA9IHRoaXMuam9iV2l0aElkc0NhY2hlW2V2Lmluc3RhbmNlXTtcclxuICAgICAgICAgICAgICAgICAgICBqb2JUb1VwZGF0ZS5wZXJjZW50YWdlID0gMTAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGpvYlRvVXBkYXRlLmZpbGVpZCA9IGV2LnJlc3VsdGZpbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgam9iVG9VcGRhdGUucmVwb3J0aWQgPSBldi5yZXN1bHRyZXBvcnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgam9iVG9VcGRhdGUucmVwb3J0cGFycyA9IGV2LnJlc3VsdHJlcG9ydHBhcmFtcztcclxuICAgICAgICAgICAgICAgICAgICBqb2JUb1VwZGF0ZS5jb21wbGV0ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub3RpZnlPbkNvbXBsZXRlZEpvYnMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5RGF0YUNoYW5nZWQoXCJhcHAuY29tcGxldGVkSm9iXCIsIGpvYlRvVXBkYXRlLmRlc2NyaXB0aW9uKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuam9ic0luUHJvZ3Jlc3MgPSB0aGlzLmFsbEpvYnMuZmlsdGVyKHQgPT4gIXQuY29tcGxldGVkKS5sZW5ndGg7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcm91bmRUb1R3byhudW0pIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW0gKiAxMDApIC8gMTAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEphY2VJRGVudGl0eSgpOiBKYWNlSWRlbnRpdHkge1xyXG4gICAgICAgIGlmICh0aGlzLkphY2VJZGVudGl0eSlcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuSmFjZUlkZW50aXR5O1xyXG4gICAgICAgIHRoaXMuSmFjZUlkZW50aXR5ID0gdGhpcy5idHMuZ2V0SmFjZUlkZW50aXR5KCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuSmFjZUlkZW50aXR5O1xyXG4gICAgfVxyXG5cclxuICAgIG5vdGlmeURhdGFDaGFuZ2VkKGV2ZW50LCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2RhdGFbZXZlbnRdID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5fZGF0YS5uZXh0KHtcclxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxyXG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9kYXRhW2V2ZW50XVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN1YnNjcmliZShldmVudDogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgICAgICB2YXIgc3Vic2NyaWJlcnMgPSB0aGlzLl9zdWJzY3JpcHRpb25zLmdldChldmVudCkgfHwgW107XHJcbiAgICAgICAgc3Vic2NyaWJlcnMucHVzaChjYWxsYmFjayk7XHJcblxyXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuc2V0KGV2ZW50LCBzdWJzY3JpYmVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgX29uRXZlbnQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgdmFyIHN1YnNjcmliZXJzID0gdGhpcy5fc3Vic2NyaXB0aW9ucy5nZXQoZGF0YVtcImV2ZW50XCJdKSB8fCBbXTtcclxuXHJcbiAgICAgICAgc3Vic2NyaWJlcnMuZm9yRWFjaCgoY2FsbGJhY2spID0+IHtcclxuICAgICAgICAgICAgY2FsbGJhY2suY2FsbChudWxsLCBkYXRhW1wiZGF0YVwiXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFNpZGViYXJXaWR0aCh3aWR0aDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5zaWRlYmFyV2lkdGggPSB3aWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0SGVhZGVySGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJIZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkpvYiB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIHNtYWxsZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIHBlcmNlbnRhZ2U6IG51bWJlcjtcclxuICAgIGNvbXBsZXRlZDogYm9vbGVhbjtcclxuICAgIGZpbGVpZDogc3RyaW5nO1xyXG4gICAgcmVwb3J0aWQ6IHN0cmluZztcclxuICAgIGNvbXBsZXhyZXBvcnRpZDogc3RyaW5nO1xyXG4gICAgcmVwb3J0cGFyczogUmVwb3J0UGFyYW1bXTtcclxufSJdfQ==
|