@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.
Files changed (180) hide show
  1. package/README.md +24 -0
  2. package/components/back-top/back-top.component.d.ts +12 -0
  3. package/components/breadcrumb/breadcrumb.component.d.ts +15 -0
  4. package/components/components.module.d.ts +25 -0
  5. package/components/error/404/pagenotfound.component.d.ts +13 -0
  6. package/components/error/500/servererror.component.d.ts +17 -0
  7. package/components/error/Angular/angularerror.component.d.ts +24 -0
  8. package/components/external-page/external_pages.component.d.ts +21 -0
  9. package/components/index.d.ts +5 -0
  10. package/components/jace-login/jace-login.component.d.ts +7 -0
  11. package/components/navbar/modules-board/jace-modules-board.component.d.ts +13 -0
  12. package/components/navbar/navbar.component.d.ts +60 -0
  13. package/components/navbar/navbar.component.loc.d.ts +8 -0
  14. package/components/page/pages.component.d.ts +23 -0
  15. package/components/public-api.d.ts +13 -0
  16. package/components/redirecter/redirecter.component.d.ts +19 -0
  17. package/components/sidebar/sidebar.component.d.ts +39 -0
  18. package/components/sidebar/sidebar.component.service.d.ts +27 -0
  19. package/directives/directives.module.d.ts +9 -0
  20. package/directives/draggable/draggable.directive.d.ts +13 -0
  21. package/directives/index.d.ts +5 -0
  22. package/directives/public-api.d.ts +4 -0
  23. package/directives/slim-scroll/slim-scroll.directive.d.ts +15 -0
  24. package/directives/widget/widget.directive.d.ts +9 -0
  25. package/domain/index.d.ts +5 -0
  26. package/domain/models/core/classes/ApplicationMenu.d.ts +16 -0
  27. package/domain/models/core/classes/EnvOptions.d.ts +14 -0
  28. package/domain/models/jace/classes/AccountScope.d.ts +9 -0
  29. package/domain/models/jace/classes/ActiveModuleView.d.ts +15 -0
  30. package/domain/models/jace/classes/JaceAccount.d.ts +26 -0
  31. package/domain/models/jace/classes/JaceIdentity.d.ts +17 -0
  32. package/domain/models/jace/classes/JaceModule.d.ts +6 -0
  33. package/domain/models/jace/classes/JacePermission.d.ts +9 -0
  34. package/domain/models/jace/classes/JaceRole.d.ts +11 -0
  35. package/domain/models/jace/classes/User.d.ts +4 -0
  36. package/domain/public-api.d.ts +11 -0
  37. package/domain/tokens.d.ts +16 -0
  38. package/esm2020/components/back-top/back-top.component.mjs +43 -0
  39. package/esm2020/components/breadcrumb/breadcrumb.component.mjs +55 -0
  40. package/esm2020/components/components.module.mjs +74 -0
  41. package/esm2020/components/error/404/pagenotfound.component.mjs +27 -0
  42. package/esm2020/components/error/500/servererror.component.mjs +35 -0
  43. package/esm2020/components/error/Angular/angularerror.component.mjs +50 -0
  44. package/esm2020/components/esfaenza-core-components.mjs +5 -0
  45. package/esm2020/components/external-page/external_pages.component.mjs +46 -0
  46. package/esm2020/components/jace-login/jace-login.component.mjs +17 -0
  47. package/esm2020/components/navbar/modules-board/jace-modules-board.component.mjs +40 -0
  48. package/esm2020/components/navbar/navbar.component.loc.mjs +36 -0
  49. package/esm2020/components/navbar/navbar.component.mjs +179 -0
  50. package/esm2020/components/page/pages.component.mjs +57 -0
  51. package/esm2020/components/public-api.mjs +14 -0
  52. package/esm2020/components/redirecter/redirecter.component.mjs +53 -0
  53. package/esm2020/components/sidebar/sidebar.component.mjs +179 -0
  54. package/esm2020/components/sidebar/sidebar.component.service.mjs +58 -0
  55. package/esm2020/directives/directives.module.mjs +18 -0
  56. package/esm2020/directives/draggable/draggable.directive.mjs +48 -0
  57. package/esm2020/directives/esfaenza-core-directives.mjs +5 -0
  58. package/esm2020/directives/public-api.mjs +5 -0
  59. package/esm2020/directives/slim-scroll/slim-scroll.directive.mjs +40 -0
  60. package/esm2020/directives/widget/widget.directive.mjs +36 -0
  61. package/esm2020/domain/esfaenza-core-domain.mjs +5 -0
  62. package/esm2020/domain/models/core/classes/ApplicationMenu.mjs +26 -0
  63. package/esm2020/domain/models/core/classes/EnvOptions.mjs +4 -0
  64. package/esm2020/domain/models/jace/classes/AccountScope.mjs +8 -0
  65. package/esm2020/domain/models/jace/classes/ActiveModuleView.mjs +9 -0
  66. package/esm2020/domain/models/jace/classes/JaceAccount.mjs +5 -0
  67. package/esm2020/domain/models/jace/classes/JaceIdentity.mjs +16 -0
  68. package/esm2020/domain/models/jace/classes/JaceModule.mjs +3 -0
  69. package/esm2020/domain/models/jace/classes/JacePermission.mjs +3 -0
  70. package/esm2020/domain/models/jace/classes/JaceRole.mjs +3 -0
  71. package/esm2020/domain/models/jace/classes/User.mjs +3 -0
  72. package/esm2020/domain/public-api.mjs +12 -0
  73. package/esm2020/domain/tokens.mjs +11 -0
  74. package/esm2020/esfaenza-core.mjs +5 -0
  75. package/esm2020/helpers/classes/ResizeListener.mjs +38 -0
  76. package/esm2020/helpers/esfaenza-core-helpers.mjs +5 -0
  77. package/esm2020/helpers/public-api.mjs +2 -0
  78. package/esm2020/lib/app.component.mjs +26 -0
  79. package/esm2020/lib/core.module.mjs +227 -0
  80. package/esm2020/modules/classes/_base.module.mjs +27 -0
  81. package/esm2020/modules/classes/t_c.module.mjs +85 -0
  82. package/esm2020/modules/esfaenza-core-modules.mjs +5 -0
  83. package/esm2020/modules/public-api.mjs +3 -0
  84. package/esm2020/pipes/esfaenza-core-pipes.mjs +5 -0
  85. package/esm2020/pipes/included_in/included_in.pipe.mjs +17 -0
  86. package/esm2020/pipes/pipes.module.mjs +20 -0
  87. package/esm2020/pipes/public-api.mjs +7 -0
  88. package/esm2020/pipes/safe_html/safe_html.pipe.mjs +18 -0
  89. package/esm2020/pipes/safe_script/safe_script.pipe.mjs +18 -0
  90. package/esm2020/pipes/safe_style/safe_style.pipe.mjs +18 -0
  91. package/esm2020/pipes/safe_url/safe_url.pipe.mjs +18 -0
  92. package/esm2020/public-api.mjs +4 -0
  93. package/esm2020/services/classes/app.accesstoken.mjs +51 -0
  94. package/esm2020/services/classes/app.errorhandler.mjs +41 -0
  95. package/esm2020/services/classes/app.event.mjs +27 -0
  96. package/esm2020/services/classes/app.httpextensions.loc.mjs +15 -0
  97. package/esm2020/services/classes/app.httpextensions.mjs +90 -0
  98. package/esm2020/services/classes/app.routeguard.mjs +22 -0
  99. package/esm2020/services/classes/app.session.mjs +33 -0
  100. package/esm2020/services/classes/app.state.mjs +172 -0
  101. package/esm2020/services/classes/preferences/app.cache.persistor.mjs +94 -0
  102. package/esm2020/services/classes/preferences/app.preference.persistor.mjs +94 -0
  103. package/esm2020/services/esfaenza-core-services.mjs +5 -0
  104. package/esm2020/services/public-api.mjs +10 -0
  105. package/fesm2015/esfaenza-core-components.mjs +870 -0
  106. package/fesm2015/esfaenza-core-components.mjs.map +1 -0
  107. package/fesm2015/esfaenza-core-directives.mjs +138 -0
  108. package/fesm2015/esfaenza-core-directives.mjs.map +1 -0
  109. package/fesm2015/esfaenza-core-domain.mjs +99 -0
  110. package/fesm2015/esfaenza-core-domain.mjs.map +1 -0
  111. package/fesm2015/esfaenza-core-helpers.mjs +44 -0
  112. package/fesm2015/esfaenza-core-helpers.mjs.map +1 -0
  113. package/fesm2015/esfaenza-core-modules.mjs +112 -0
  114. package/fesm2015/esfaenza-core-modules.mjs.map +1 -0
  115. package/fesm2015/esfaenza-core-pipes.mjs +97 -0
  116. package/fesm2015/esfaenza-core-pipes.mjs.map +1 -0
  117. package/fesm2015/esfaenza-core-services.mjs +598 -0
  118. package/fesm2015/esfaenza-core-services.mjs.map +1 -0
  119. package/fesm2015/esfaenza-core.mjs +251 -0
  120. package/fesm2015/esfaenza-core.mjs.map +1 -0
  121. package/fesm2020/esfaenza-core-components.mjs +863 -0
  122. package/fesm2020/esfaenza-core-components.mjs.map +1 -0
  123. package/fesm2020/esfaenza-core-directives.mjs +138 -0
  124. package/fesm2020/esfaenza-core-directives.mjs.map +1 -0
  125. package/fesm2020/esfaenza-core-domain.mjs +98 -0
  126. package/fesm2020/esfaenza-core-domain.mjs.map +1 -0
  127. package/fesm2020/esfaenza-core-helpers.mjs +44 -0
  128. package/fesm2020/esfaenza-core-helpers.mjs.map +1 -0
  129. package/fesm2020/esfaenza-core-modules.mjs +112 -0
  130. package/fesm2020/esfaenza-core-modules.mjs.map +1 -0
  131. package/fesm2020/esfaenza-core-pipes.mjs +97 -0
  132. package/fesm2020/esfaenza-core-pipes.mjs.map +1 -0
  133. package/fesm2020/esfaenza-core-services.mjs +595 -0
  134. package/fesm2020/esfaenza-core-services.mjs.map +1 -0
  135. package/fesm2020/esfaenza-core.mjs +251 -0
  136. package/fesm2020/esfaenza-core.mjs.map +1 -0
  137. package/helpers/classes/ResizeListener.d.ts +12 -0
  138. package/helpers/index.d.ts +5 -0
  139. package/helpers/public-api.d.ts +1 -0
  140. package/index.d.ts +5 -0
  141. package/lib/app.component.d.ts +12 -0
  142. package/lib/core.module.d.ts +82 -0
  143. package/modules/classes/_base.module.d.ts +4 -0
  144. package/modules/classes/t_c.module.d.ts +19 -0
  145. package/modules/index.d.ts +5 -0
  146. package/modules/public-api.d.ts +2 -0
  147. package/package.json +115 -0
  148. package/pipes/included_in/included_in.pipe.d.ts +7 -0
  149. package/pipes/index.d.ts +5 -0
  150. package/pipes/pipes.module.d.ts +11 -0
  151. package/pipes/public-api.d.ts +6 -0
  152. package/pipes/safe_html/safe_html.pipe.d.ts +10 -0
  153. package/pipes/safe_script/safe_script.pipe.d.ts +10 -0
  154. package/pipes/safe_style/safe_style.pipe.d.ts +10 -0
  155. package/pipes/safe_url/safe_url.pipe.d.ts +10 -0
  156. package/public-api.d.ts +3 -0
  157. package/services/classes/app.accesstoken.d.ts +15 -0
  158. package/services/classes/app.errorhandler.d.ts +11 -0
  159. package/services/classes/app.event.d.ts +10 -0
  160. package/services/classes/app.httpextensions.d.ts +34 -0
  161. package/services/classes/app.httpextensions.loc.d.ts +8 -0
  162. package/services/classes/app.routeguard.d.ts +10 -0
  163. package/services/classes/app.session.d.ts +14 -0
  164. package/services/classes/app.state.d.ts +59 -0
  165. package/services/classes/preferences/app.cache.persistor.d.ts +25 -0
  166. package/services/classes/preferences/app.preference.persistor.d.ts +25 -0
  167. package/services/index.d.ts +5 -0
  168. package/services/public-api.d.ts +9 -0
  169. package/theme/initial.scss +48 -0
  170. package/theme/styles/_base.scss +257 -0
  171. package/theme/styles/_bootstrap-override.scss +1624 -0
  172. package/theme/styles/_font.scss +86 -0
  173. package/theme/styles/_fullcalendar-override.scss +86 -0
  174. package/theme/styles/_libs-override.scss +97 -0
  175. package/theme/styles/_material-override.scss +231 -0
  176. package/theme/styles/_mixins.scss +50 -0
  177. package/theme/styles/_preloader.scss +119 -0
  178. package/theme/styles/_project-override.scss +2383 -0
  179. package/theme/styles/_variables.scss +52 -0
  180. package/theme/styles/skins/_blue.scss +16 -0
@@ -0,0 +1,595 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, Optional, Inject } from '@angular/core';
3
+ import { JaceIdentity, USE_FAKE_ACCESS_TOKEN } from '@esfaenza/core/domain';
4
+ import * as i1 from 'ngx-cookie-service';
5
+ import * as i2 from '@angular/common/http';
6
+ import { HttpErrorResponse, HttpHeaders } from '@angular/common/http';
7
+ import * as i4$1 from '@angular/router';
8
+ import { Router } from '@angular/router';
9
+ import * as i1$1 from '@esfaenza/localizations';
10
+ import { LocalizationService } from '@esfaenza/localizations';
11
+ import * as i4 from '@esfaenza/extensions';
12
+ import { InboundMessageTypes } from '@esfaenza/extensions';
13
+ import { AdmMessageTypes, MK_ADM } from '@esfaenza/admin-module';
14
+ import * as customParseFormat from 'dayjs/plugin/customParseFormat';
15
+ import * as isBetween from 'dayjs/plugin/isBetween';
16
+ import * as minMax from 'dayjs/plugin/minMax';
17
+ import * as utc from 'dayjs/plugin/utc';
18
+ import { Subject, of } from 'rxjs';
19
+ import * as i3 from '@esfaenza/signalr-notifications';
20
+ import * as i5 from '@esfaenza/access-control';
21
+ import { AccessControlRouteGuard } from '@esfaenza/access-control';
22
+ import * as i4$2 from '@esfaenza/preferences';
23
+ import { CachePersistor, PreferencesPersistor } from '@esfaenza/preferences';
24
+ import { map } from 'rxjs/operators';
25
+
26
+ // Angular
27
+ class TokenService {
28
+ constructor(cs, USE_FAKE_ACCESS_TOKEN) {
29
+ this.cs = cs;
30
+ this.USE_FAKE_ACCESS_TOKEN = USE_FAKE_ACCESS_TOKEN;
31
+ }
32
+ clearTokens() {
33
+ this.cs.delete("access_token");
34
+ }
35
+ getAccessToken() {
36
+ return this.USE_FAKE_ACCESS_TOKEN ? this.getFakeToken() : this.cs.get("accessToken");
37
+ }
38
+ getJaceIdentity() {
39
+ let token = this.USE_FAKE_ACCESS_TOKEN ? this.getFakeToken() : this.cs.get("accessToken");
40
+ if (!token)
41
+ return null;
42
+ let base64Url = token.split(".")[1];
43
+ let base64 = base64Url.replace("-", "+").replace("_", "/");
44
+ let tokenData = JSON.parse(decodeURIComponent(window.atob(base64).split("").map(c => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2)).join("")));
45
+ let identity = new JaceIdentity(this.accountScope);
46
+ identity.IdAccount = tokenData.ACCOUNTID;
47
+ identity.IdUser = tokenData.USERID;
48
+ identity.DsUser = tokenData.USERNAME;
49
+ identity.FullName = tokenData.USERDESCRIPTION;
50
+ identity.Idtenant = tokenData.TENANT;
51
+ identity.TenantName = tokenData.TENANTNAME;
52
+ identity.ExpirationTime = new Date(tokenData.exp * 1000); //unix-epoch in secondi -> millisecondi
53
+ return identity;
54
+ }
55
+ //Accesstoken fittizio ma valido, per simulare la connession corretta col backend
56
+ getFakeToken() {
57
+ return "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE1OTA0MTU4NDYsImV4cCI6MTk5MDQyMDA2NSwiaXNzIjoiaHR0cDovL2F1dGhhcGlzdGFnaW5nYS5qYWNlLmVuZXJneXNvZnR3YXJlLnByaXYiLCJhdWQiOlsiaHR0cDovL2F1dGhhcGlzdGFnaW5nYS5qYWNlLmVuZXJneXNvZnR3YXJlLnByaXYvcmVzb3VyY2VzIiwiYXV0aGVudGljYXRpbyJdLCJjbGllbnRfaWQiOiJtZXRlcmluZ3N0YWdpbmciLCJzdWIiOiIxMDAzIiwiYXV0aF90aW1lIjoxNTkwNDE1ODQ2LCJpZHAiOiJsb2NhbCIsIkFDQ09VTlRJRCI6IjEwMDMiLCJVU0VSSUQiOiIyNTkiLCJVU0VSREVTQ1JJUFRJT04iOiJUZXN0IFVzZXIiLCJVU0VSTkFNRSI6IlRFU1QiLCJURU5BTlQiOiJGWCIsIlRFTkFOVE5BTUUiOiJGZW5peCBTcmwiLCJyb2xlIjpbIkJhY2tvZmZpY2UiLCJEYXRhIE1hbmFnZXIiLCJUcmFkaW5nIiwiUmVtaXQgTWFuYWdlciIsIlRlbmFudCBSZWFkZXIiLCJDb21wbC4gQVJFUkEgUmVhZGVyIiwiQ29tcGwuIEFSRVJBIFdyaXRlciBMMSIsIkNvbXBsLiBBUkVSQSBXcml0ZXIgTDIiLCJKYWNlIEFkbWluIl0sIk1PRFVMRSI6WyIzNiIsIjM3IiwiMTQiLCI1IiwiMzIiLCIxNSIsIjQyIiwiOCIsIjE3IiwiMTEiLCIyMSIsIjkiLCIzOCIsIjE4IiwiNyIsIjM0IiwiMTYiLCIyMCIsIjE5IiwiMSIsIjIiLCIzMSIsIjEyIiwiMTAiLCIzMyIsIjQwIiwiMjIiLCIxMyIsIjYiXSwiUEVSTUlTU0lPTiI6WyJleHRyYWN0X2RhdGEiLCJtZG1fcmVhZCIsIm1kbV9hZHZfb3AiLCJtZG1fY2ZnX2Jhc2UiLCJjcmVhdGVfdHJhZGUiLCJtZG1fbWFzc19kZWwiLCJzZW5kX2NvbW0iLCJtZG1fZmN0IiwibWRtX2NmZ19hZHYiLCJtZG1fY2ZnX3JlYWQiLCJtYW5hZ2VfZWxlIiwibWFuYWdlX2dhcyIsImNvbmZpcm1fdHJhZGUiLCJtZG1fY3VzdG9taXplIiwibmV3X2NvbW0iLCJtZG1fbWFzc19mY3QiLCJtZG1fb3AiLCJ2aWV3X2JpbGxpbmciLCJtZG1fbWFzc19vcCIsIm1kbV9hZHZfcmVhZCJdLCJqdGkiOiIwZTUzMDc1NjE2MDZlNDQ0ZTI4ODViMTFhMzE0NDQyMSIsInNjb3BlIjpbImF1dGgiLCJvZmZsaW5lX2FjY2VzcyJdLCJhbXIiOlsicGFzc3dvcmQiXSwiaWF0IjoxNTkwNDE2NDY1fQ.MNcphwkIwvLFDDpLaFDN3GK11lgT2aqvXa8s7bQJgdE";
58
+ }
59
+ }
60
+ 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 });
61
+ TokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TokenService, providedIn: "root" });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TokenService, decorators: [{
63
+ type: Injectable,
64
+ args: [{ providedIn: "root" }]
65
+ }], ctorParameters: function () { return [{ type: i1.CookieService }, { type: undefined, decorators: [{
66
+ type: Optional
67
+ }, {
68
+ type: Inject,
69
+ args: [USE_FAKE_ACCESS_TOKEN]
70
+ }] }]; } });
71
+
72
+ // Angular
73
+ class APPErrorHandler {
74
+ constructor(injector) {
75
+ this.injector = injector;
76
+ }
77
+ handleError(error) {
78
+ if (this.router == null)
79
+ this.router = this.injector.get(Router);
80
+ //Ignoro eventuali errori di javascript quando il redirect è attivo
81
+ if (myconfig && myconfig.redirectInProgress) {
82
+ console.log("Javascript error on redirect in progress, ignoring this event");
83
+ return;
84
+ }
85
+ //In caso io abbia impostato succesresultmandatory nell'httprequest e questa abbia dato errore tiro fuori un exception che dev'essere mostrata come si deve
86
+ var newError = "";
87
+ if (!error.message && !error.stack)
88
+ newError = error;
89
+ else if (error instanceof HttpErrorResponse)
90
+ newError = error.message;
91
+ else
92
+ newError = error.stack && error.stack.length > 1000 ? error.stack.substring(0, 999) + "[...]" : error.stack;
93
+ var pars = { errorMessage: this.b64EncodeUnicode(newError), fromUrl: this.router.url };
94
+ this.router.navigate(["/anerr", pars]);
95
+ }
96
+ b64EncodeUnicode(str) {
97
+ // first we use encodeURIComponent to get percent-encoded UTF-8,
98
+ // then we convert the percent encodings into raw bytes which
99
+ // can be fed into btoa.
100
+ return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(("0x" + p1))));
101
+ }
102
+ }
103
+ APPErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: APPErrorHandler, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
104
+ APPErrorHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: APPErrorHandler });
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: APPErrorHandler, decorators: [{
106
+ type: Injectable
107
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
108
+
109
+ // Angular
110
+ class OutZoneEventPlugin {
111
+ constructor(zone) {
112
+ this.zone = zone;
113
+ }
114
+ supports(eventName) {
115
+ return eventName.endsWith('out-zone');
116
+ }
117
+ addEventListener(element, eventName, originalHandler) {
118
+ let eventOriginalName = eventName.split('.')[0];
119
+ let standardHandler = (event) => originalHandler(event);
120
+ if (eventName.endsWith('out-zone'))
121
+ this.zone.runOutsideAngular(() => { element.addEventListener(eventOriginalName, standardHandler); });
122
+ else
123
+ element.addEventListener(eventOriginalName, standardHandler);
124
+ return () => element.removeEventListener(eventOriginalName, standardHandler);
125
+ }
126
+ }
127
+ OutZoneEventPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OutZoneEventPlugin, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
128
+ OutZoneEventPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OutZoneEventPlugin, providedIn: 'root' });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OutZoneEventPlugin, decorators: [{
130
+ type: Injectable,
131
+ args: [{ providedIn: 'root' }]
132
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
133
+
134
+ class HTTPServiceExtensionsLoc extends LocalizationService {
135
+ constructor(injector) {
136
+ super(injector);
137
+ super.set("it->en", "Il Server sembra essere offline, prova a ricaricare la pagina", ["Server seems to be offline, try to reload this page"]);
138
+ }
139
+ }
140
+ HTTPServiceExtensionsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensionsLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
141
+ HTTPServiceExtensionsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensionsLoc });
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensionsLoc, decorators: [{
143
+ type: Injectable
144
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
145
+
146
+ class AppState {
147
+ constructor(lc, bts, notifications, MessageDef, intercom) {
148
+ this.lc = lc;
149
+ this.bts = bts;
150
+ this.notifications = notifications;
151
+ this.MessageDef = MessageDef;
152
+ this.intercom = intercom;
153
+ this.Embedded = false;
154
+ this.redirectingToLogin = false;
155
+ this.handlingError = false;
156
+ this.christmasTime = false;
157
+ this.halloweenTime = false;
158
+ this.jobsInProgress = 0;
159
+ this.allJobs = [];
160
+ this.jobWithIdsCache = {};
161
+ this.notifyOnCompletedJobs = true;
162
+ this._data = new Subject();
163
+ this._dataStream$ = this._data.asObservable();
164
+ this._subscriptions = new Map();
165
+ this.ModulesLocalizations = {};
166
+ this.setupDayjs();
167
+ this.setupSignalRJobListening();
168
+ this.JaceIdentity = null;
169
+ this._dataStream$.subscribe((data) => this._onEvent(data));
170
+ //Decide se siamo attorno a natale
171
+ var today = dayjs();
172
+ var lowerBound = dayjs("18/12/" + today.year(), "DD/MM/YYYY");
173
+ var upperBound = dayjs("07/01/" + (today.year() + 1), "DD/MM/YYYY");
174
+ this.christmasTime = today > lowerBound && today < upperBound;
175
+ //Decide se siamo attorno ad halloween
176
+ var lowerBound = dayjs("28/10/" + today.year(), "DD/MM/YYYY");
177
+ var upperBound = dayjs("05/11/" + today.year(), "DD/MM/YYYY");
178
+ this.halloweenTime = today > lowerBound && today < upperBound;
179
+ this.intercom.inbounds.subscribe((t) => { this.handleInboundMessage(t); });
180
+ }
181
+ registerNavigation(route) {
182
+ let title = route.data["title"];
183
+ let internal = route.data["internalNavigation"];
184
+ /*
185
+ * Parent ({url: [{path: "{module}"}]})
186
+ * Parent ({url: [{path: ""}]}) (Root del modulo lazy)
187
+ * -> Navigazione attuale <-
188
+ */
189
+ let module = route.parent?.parent?.url[0]?.path;
190
+ let loc = module ? this.ModulesLocalizations[module] : null;
191
+ if (!module)
192
+ 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('/'));
193
+ this.notifyDataChanged(internal ? "menu.adjustSubNavigationTo" : "menu.adjustNavigationTo", loc ? loc.loc(title) : title);
194
+ }
195
+ handleInboundMessage(t) {
196
+ switch (t.type) {
197
+ case InboundMessageTypes.Navigation:
198
+ {
199
+ this.notifyDataChanged(t.message.sub ? "menu.adjustSubNavigationTo" : "menu.adjustNavigationTo", t.message.routeTitle);
200
+ this.intercom.send(AdmMessageTypes.Message, "Navigation Message Received", MK_ADM);
201
+ }
202
+ }
203
+ }
204
+ setupDayjs() {
205
+ dayjs.extend(customParseFormat);
206
+ dayjs.extend(minMax);
207
+ dayjs.extend(isBetween);
208
+ dayjs.extend(utc);
209
+ // Require e collegamento con la localizzazione per dayjs
210
+ import("dayjs/locale/" + this.lc.SmallLocale + ".js").then(locale => {
211
+ dayjs.locale(locale);
212
+ });
213
+ }
214
+ setupSignalRJobListening() {
215
+ this.notifications.observe(this.MessageDef.IN_JobProgressNotification).subscribe((ev) => {
216
+ var desc = ev.description + " (" + ev.user + ")";
217
+ let job = {
218
+ id: ev.instance,
219
+ description: desc,
220
+ smalldescription: desc.length > 35 ? desc.substring(0, 30) + "..." : desc,
221
+ percentage: this.roundToTwo(ev.progress),
222
+ completed: ev.type == 'Completed',
223
+ fileid: ev.resultfile,
224
+ reportid: ev.resultreport,
225
+ reportpars: ev.resultreportparams,
226
+ complexreportid: ev.resultcomplexreport
227
+ };
228
+ switch (ev.type) {
229
+ case "Started":
230
+ this.jobWithIdsCache[ev.instance] = job;
231
+ this.allJobs.splice(0, 0, job);
232
+ break;
233
+ case "Progress":
234
+ // Se mi arriva un progress di un job che non ho significa che mi sono loggato ora con dei Job in corso
235
+ // quindi per prima cosa devo metterlo in lista
236
+ if (!this.jobWithIdsCache[ev.instance]) {
237
+ this.jobWithIdsCache[ev.instance] = job;
238
+ this.allJobs.splice(0, 0, job);
239
+ }
240
+ this.jobWithIdsCache[ev.instance].percentage = this.roundToTwo(ev.progress);
241
+ break;
242
+ case "Completed":
243
+ if (!this.jobWithIdsCache[ev.instance]) {
244
+ this.jobWithIdsCache[ev.instance] = job;
245
+ this.allJobs.splice(0, 0, job);
246
+ }
247
+ var jobToUpdate = this.jobWithIdsCache[ev.instance];
248
+ jobToUpdate.percentage = 100;
249
+ jobToUpdate.fileid = ev.resultfile;
250
+ jobToUpdate.reportid = ev.resultreport;
251
+ jobToUpdate.reportpars = ev.resultreportparams;
252
+ jobToUpdate.completed = true;
253
+ if (this.notifyOnCompletedJobs)
254
+ this.notifyDataChanged("app.completedJob", jobToUpdate.description);
255
+ break;
256
+ }
257
+ this.jobsInProgress = this.allJobs.filter(t => !t.completed).length;
258
+ });
259
+ }
260
+ roundToTwo(num) {
261
+ return Math.round(num * 100) / 100;
262
+ }
263
+ getJaceIDentity() {
264
+ if (this.JaceIdentity)
265
+ return this.JaceIdentity;
266
+ this.JaceIdentity = this.bts.getJaceIdentity();
267
+ return this.JaceIdentity;
268
+ }
269
+ notifyDataChanged(event, value) {
270
+ this._data[event] = value;
271
+ this._data.next({
272
+ event: event,
273
+ data: this._data[event]
274
+ });
275
+ }
276
+ subscribe(event, callback) {
277
+ var subscribers = this._subscriptions.get(event) || [];
278
+ subscribers.push(callback);
279
+ this._subscriptions.set(event, subscribers);
280
+ }
281
+ _onEvent(data) {
282
+ var subscribers = this._subscriptions.get(data["event"]) || [];
283
+ subscribers.forEach((callback) => {
284
+ callback.call(null, data["data"]);
285
+ });
286
+ }
287
+ setSidebarWidth(width) {
288
+ this.sidebarWidth = width;
289
+ }
290
+ setHeaderHeight(height) {
291
+ this.headerHeight = height;
292
+ }
293
+ }
294
+ AppState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, deps: [{ token: i1$1.LocalizationService }, { token: TokenService }, { token: i3.NotificationsService }, { token: i3.BaseMessageService }, { token: i4.InterComService }], target: i0.ɵɵFactoryTarget.Injectable });
295
+ AppState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, providedIn: "root" });
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, decorators: [{
297
+ type: Injectable,
298
+ args: [{ providedIn: "root" }]
299
+ }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: TokenService }, { type: i3.NotificationsService }, { type: i3.BaseMessageService }, { type: i4.InterComService }]; } });
300
+ class ApplicationJob {
301
+ }
302
+
303
+ // Angular
304
+ class HTTPServiceExtensions {
305
+ constructor(lc, tks, as, router, ac, msgs) {
306
+ this.lc = lc;
307
+ this.tks = tks;
308
+ this.as = as;
309
+ this.router = router;
310
+ this.ac = ac;
311
+ this.msgs = msgs;
312
+ this.lc = this.lc.generateFromType(HTTPServiceExtensionsLoc);
313
+ }
314
+ //Gestione Auth
315
+ retrieveAccessToken() {
316
+ return this.tks.getAccessToken().toString();
317
+ }
318
+ retrieveIdentity() {
319
+ return this.tks.getJaceIdentity();
320
+ }
321
+ //Gestione ridirezione al login / altre pagine
322
+ readRedirectingToLogin() {
323
+ return this.as.redirectingToLogin;
324
+ }
325
+ writeRedirectingToLogin(status) {
326
+ this.as.redirectingToLogin = status;
327
+ }
328
+ redirectToLogin() {
329
+ console.log("httpextensions: redirecting to login");
330
+ this.router.navigate(["login", { fromUrl: this.router.url }]);
331
+ }
332
+ readRedirectionStatus() {
333
+ return myconfig?.redirectInProgress;
334
+ }
335
+ writeRedirectionStatus(status) {
336
+ myconfig.redirectInProgress = status;
337
+ }
338
+ //Gestione error handling flag
339
+ readHandlingErrorStatus() {
340
+ return this.as.handlingError;
341
+ }
342
+ writeHandlingErrorStatus(status) {
343
+ this.as.handlingError = status;
344
+ }
345
+ // 444, se false passa a handleBlockingException
346
+ handleNotConfiguredException() {
347
+ if (this.ac.has("P:mdm_customize")) {
348
+ myconfig.redirectInProgress = true;
349
+ this.as.handlingError = false;
350
+ this.router.navigate(["pages/adm/tenantconfig"]);
351
+ return true;
352
+ }
353
+ return false;
354
+ }
355
+ // 400, 403, 404, 444
356
+ handleBlockingException(status, text) {
357
+ this.msgs.simpleError(status + ": " + text);
358
+ this.as.handlingError = false;
359
+ }
360
+ // Tutto quello che non è gestito da handleBlockingException
361
+ handleException(status, text) {
362
+ if (status == 503) {
363
+ this.msgs.simpleError(this.lc.loc("Il Server sembra essere offline, prova a ricaricare la pagina"));
364
+ this.as.handlingError = false;
365
+ }
366
+ else if (status == 542) {
367
+ this.msgs.simpleError(text);
368
+ this.as.handlingError = false;
369
+ }
370
+ else {
371
+ var st = btoa(encodeURIComponent(text).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(("0x" + p1))));
372
+ var pars = { statusCode: status, statusText: st, fromUrl: this.router.url };
373
+ this.router.navigate(["iserr", pars]);
374
+ }
375
+ }
376
+ }
377
+ HTTPServiceExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions, deps: [{ token: i1$1.LocalizationService }, { token: TokenService }, { token: AppState }, { token: i4$1.Router }, { token: i5.AccessControlService }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
378
+ HTTPServiceExtensions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions });
379
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions, decorators: [{
380
+ type: Injectable
381
+ }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: TokenService }, { type: AppState }, { type: i4$1.Router }, { type: i5.AccessControlService }, { type: i4.MessageService }]; } });
382
+
383
+ // Angular
384
+ class SessionRetriever {
385
+ constructor(bts, router) {
386
+ this.bts = bts;
387
+ this.router = router;
388
+ }
389
+ /** Tenant§Account§User§ModuleId */
390
+ getSessionKey() {
391
+ if (this.SessionIdentity)
392
+ return this.SessionIdentity;
393
+ // Se non ho un id mi manca il login, quindi via di qua
394
+ var id = this.bts.getJaceIdentity();
395
+ if (!id) {
396
+ console.log("no identity, redirecting to login");
397
+ this.router.navigate(["login"]);
398
+ return "";
399
+ }
400
+ // TODO: FUCK THIS SHIT
401
+ this.SessionIdentity = "" + id.Idtenant + "§" + id.IdAccount + "§" + id.IdUser + "§" + "metering";
402
+ return this.SessionIdentity;
403
+ }
404
+ }
405
+ SessionRetriever.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, deps: [{ token: TokenService }, { token: i4$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
406
+ SessionRetriever.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, providedIn: "root" });
407
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, decorators: [{
408
+ type: Injectable,
409
+ args: [{ providedIn: "root" }]
410
+ }], ctorParameters: function () { return [{ type: TokenService }, { type: i4$1.Router }]; } });
411
+
412
+ // Angular
413
+ // Chiamate ai Repository
414
+ const BASE_Cache_Sessions = "/api/Cache/sessions";
415
+ class ApplicationCachePersistor extends CachePersistor {
416
+ // Passo direttamente dall'HttpClient nativo in quanto non posso passare dall'HttpService dato che
417
+ // lui richiede il PreferencesService che richiede questa classe che richiede l'HttpService ecc ecc...
418
+ constructor(lc, http, tks, session) {
419
+ super(session);
420
+ this.lc = lc;
421
+ this.http = http;
422
+ this.tks = tks;
423
+ }
424
+ persist(key, item) {
425
+ let sk = this.session.getSessionKey();
426
+ if (!sk)
427
+ return of(false);
428
+ return this.http.post(this.getItemUrl(sk, key), JSON.stringify(item), { headers: this.getHeaders() });
429
+ }
430
+ recover(key) {
431
+ let sk = this.session.getSessionKey();
432
+ if (!sk)
433
+ return of(null);
434
+ return this.http.get(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(map((res) => {
435
+ var resProp = null;
436
+ try {
437
+ resProp = JSON.parse(res);
438
+ }
439
+ catch { }
440
+ return resProp;
441
+ }));
442
+ }
443
+ recoverAll() {
444
+ let sk = this.session.getSessionKey();
445
+ if (!sk)
446
+ return of(null);
447
+ return this.http.get(this.getSessionUrl(sk), { headers: this.getHeaders() }).pipe(map((res) => {
448
+ for (var prop in res) {
449
+ var resProp = null;
450
+ try {
451
+ resProp = JSON.parse(res[prop]);
452
+ }
453
+ catch { }
454
+ res[prop] = resProp;
455
+ }
456
+ return res;
457
+ }));
458
+ }
459
+ remove(key) {
460
+ let sk = this.session.getSessionKey();
461
+ if (!sk)
462
+ return of(false);
463
+ return this.http.delete(this.getItemUrl(sk, key), { headers: this.getHeaders() });
464
+ }
465
+ clear() {
466
+ let sk = this.session.getSessionKey();
467
+ if (!sk)
468
+ return of(false);
469
+ return this.http.delete(this.getItemsUrl(sk), { headers: this.getHeaders() });
470
+ }
471
+ getHeaders(contentType = 'application/json') {
472
+ return new HttpHeaders()
473
+ .append("Content-Type", contentType)
474
+ .append("Accept", "application/json")
475
+ .append("Authorization", "Bearer " + this.tks.getAccessToken())
476
+ .append("Accept-Language", this.lc.Locale);
477
+ }
478
+ getSessionUrl(sessionKey) {
479
+ return `${BASE_Cache_Sessions}/${sessionKey}`;
480
+ }
481
+ getItemsUrl(sessionKey) {
482
+ return `${this.getSessionUrl(sessionKey)}/items`;
483
+ }
484
+ getItemUrl(sessionKey, itemKey) {
485
+ return `${this.getItemsUrl(sessionKey)}/${itemKey}`;
486
+ }
487
+ }
488
+ ApplicationCachePersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationCachePersistor, deps: [{ token: i1$1.LocalizationService }, { token: i2.HttpClient }, { token: TokenService }, { token: i4$2.BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
489
+ ApplicationCachePersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationCachePersistor });
490
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationCachePersistor, decorators: [{
491
+ type: Injectable
492
+ }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i2.HttpClient }, { type: TokenService }, { type: i4$2.BaseSessionRetriever }]; } });
493
+
494
+ // Angular
495
+ // Chiamate ai Repository
496
+ const BASE_Preferences_Sessions = "/api/Preferences/sessions";
497
+ class ApplicationPreferencesPersistor extends PreferencesPersistor {
498
+ // Passo direttamente dall'HttpClient nativo in quanto non posso passare dall'HttpService dato che
499
+ // lui richiede il PreferencesService che richiede questa classe che richiede l'HttpService ecc ecc...
500
+ constructor(lc, http, tks, session) {
501
+ super(session);
502
+ this.lc = lc;
503
+ this.http = http;
504
+ this.tks = tks;
505
+ }
506
+ persist(key, item) {
507
+ let sk = this.session.getSessionKey();
508
+ if (!sk)
509
+ return of(false);
510
+ return this.http.post(this.getItemUrl(sk, key), JSON.stringify(item), { headers: this.getHeaders() });
511
+ }
512
+ recover(key) {
513
+ let sk = this.session.getSessionKey();
514
+ if (!sk)
515
+ return of(null);
516
+ return this.http.get(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(map((res) => {
517
+ var resProp = null;
518
+ try {
519
+ resProp = JSON.parse(res);
520
+ }
521
+ catch { }
522
+ return resProp;
523
+ }));
524
+ }
525
+ recoverAll() {
526
+ let sk = this.session.getSessionKey();
527
+ if (!sk)
528
+ return of(null);
529
+ return this.http.get(this.getSessionUrl(sk), { headers: this.getHeaders() }).pipe(map((res) => {
530
+ for (var prop in res) {
531
+ var resProp = null;
532
+ try {
533
+ resProp = JSON.parse(res[prop]);
534
+ }
535
+ catch { }
536
+ res[prop] = resProp;
537
+ }
538
+ return res;
539
+ }));
540
+ }
541
+ remove(key) {
542
+ let sk = this.session.getSessionKey();
543
+ if (!sk)
544
+ return of(false);
545
+ return this.http.delete(this.getItemUrl(sk, key), { headers: this.getHeaders() });
546
+ }
547
+ clear() {
548
+ let sk = this.session.getSessionKey();
549
+ if (!sk)
550
+ return of(false);
551
+ return this.http.delete(this.getItemsUrl(sk), { headers: this.getHeaders() });
552
+ }
553
+ getHeaders(contentType = 'application/json') {
554
+ return new HttpHeaders()
555
+ .append("Content-Type", contentType)
556
+ .append("Accept", "application/json")
557
+ .append("Authorization", "Bearer " + this.tks.getAccessToken())
558
+ .append("Accept-Language", this.lc.Locale);
559
+ }
560
+ getSessionUrl(sessionKey) {
561
+ return `${BASE_Preferences_Sessions}/${sessionKey}`;
562
+ }
563
+ getItemsUrl(sessionKey) {
564
+ return `${this.getSessionUrl(sessionKey)}/items`;
565
+ }
566
+ getItemUrl(sessionKey, itemKey) {
567
+ return `${this.getItemsUrl(sessionKey)}/${itemKey}`;
568
+ }
569
+ }
570
+ ApplicationPreferencesPersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationPreferencesPersistor, deps: [{ token: i1$1.LocalizationService }, { token: i2.HttpClient }, { token: TokenService }, { token: i4$2.BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
571
+ ApplicationPreferencesPersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationPreferencesPersistor });
572
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationPreferencesPersistor, decorators: [{
573
+ type: Injectable
574
+ }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i2.HttpClient }, { type: TokenService }, { type: i4$2.BaseSessionRetriever }]; } });
575
+
576
+ // Angular
577
+ class BaseRouterGuard extends AccessControlRouteGuard {
578
+ constructor(ms, acc, router, ts) {
579
+ super(ms, acc, router);
580
+ if (!acc.Initialized)
581
+ acc.initializeIdentity(ts.getJaceIdentity());
582
+ }
583
+ }
584
+ BaseRouterGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard, deps: [{ token: i4.MessageService }, { token: i5.AccessControlService }, { token: i4$1.Router }, { token: TokenService }], target: i0.ɵɵFactoryTarget.Injectable });
585
+ BaseRouterGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard });
586
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard, decorators: [{
587
+ type: Injectable
588
+ }], ctorParameters: function () { return [{ type: i4.MessageService }, { type: i5.AccessControlService }, { type: i4$1.Router }, { type: TokenService }]; } });
589
+
590
+ /**
591
+ * Generated bundle index. Do not edit.
592
+ */
593
+
594
+ export { APPErrorHandler, AppState, ApplicationCachePersistor, ApplicationJob, ApplicationPreferencesPersistor, BaseRouterGuard, HTTPServiceExtensions, OutZoneEventPlugin, SessionRetriever, TokenService };
595
+ //# sourceMappingURL=esfaenza-core-services.mjs.map