aril 0.0.26 → 0.0.28

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 (117) hide show
  1. package/README.md +2 -2
  2. package/boot/config/config.sample.json +19 -0
  3. package/boot/config/index.d.ts +2 -0
  4. package/boot/config/src/app.configs.d.ts +13 -0
  5. package/boot/{host/src/services/custom-manifest.d.ts → config/src/custom-remote.d.ts} +2 -2
  6. package/boot/host/index.d.ts +0 -1
  7. package/boot/host/src/bootstrap.d.ts +2 -2
  8. package/boot/host/src/services/microFrontEnd.service.d.ts +1 -1
  9. package/boot/mfe/index.d.ts +1 -1
  10. package/boot/mfe/src/app.component.d.ts +2 -0
  11. package/boot/mfe/src/appComponentLoader.d.ts +1 -0
  12. package/boot/mfe/src/bootstrap.d.ts +5 -2
  13. package/boot/mfe/src/loadStyles.d.ts +3 -0
  14. package/esm2022/boot/config/aril-boot-config.mjs +5 -0
  15. package/esm2022/boot/config/index.mjs +3 -0
  16. package/esm2022/boot/config/src/app.configs.mjs +19 -0
  17. package/esm2022/boot/config/src/custom-remote.mjs +2 -0
  18. package/esm2022/boot/host/index.mjs +1 -2
  19. package/esm2022/boot/host/src/bootstrap.mjs +14 -12
  20. package/esm2022/boot/host/src/services/microFrontEnd.service.mjs +1 -1
  21. package/esm2022/boot/mfe/index.mjs +2 -2
  22. package/esm2022/boot/mfe/src/app.component.mjs +10 -3
  23. package/esm2022/boot/mfe/src/appComponentLoader.mjs +5 -0
  24. package/esm2022/boot/mfe/src/bootstrap.mjs +24 -33
  25. package/esm2022/boot/mfe/src/loadStyles.mjs +16 -0
  26. package/esm2022/http/index.mjs +2 -1
  27. package/esm2022/http/lib/enums.mjs +3 -1
  28. package/esm2022/http/src/httpClient.mjs +6 -4
  29. package/esm2022/http/src/serviceBase.mjs +12 -43
  30. package/esm2022/http/src/serviceMockBase.mjs +5 -0
  31. package/esm2022/http/src/serviceRequest.mjs +26 -0
  32. package/esm2022/http/src/serviceStateMethods.mjs +97 -3
  33. package/esm2022/i18n/index.mjs +2 -2
  34. package/esm2022/i18n/src/folder-name-token.mjs +3 -0
  35. package/esm2022/i18n/src/loader.mjs +3 -3
  36. package/esm2022/i18n/src/provideScope.mjs +2 -2
  37. package/esm2022/keycloak/index.mjs +2 -1
  38. package/esm2022/keycloak/src/auth.guard.mjs +39 -0
  39. package/esm2022/keycloak/src/keycloak.manager.mjs +21 -2
  40. package/esm2022/public-api.mjs +1 -2
  41. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +8 -5
  42. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +3 -3
  43. package/esm2022/theme/layout/service/app.layout.service.mjs +1 -1
  44. package/esm2022/theme/layout/service/app.menu.service.mjs +3 -1
  45. package/esm2022/ui/button/src/button.component.mjs +1 -1
  46. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +1 -1
  47. package/esm2022/util/block/aril-util-block.mjs +5 -0
  48. package/esm2022/util/block/index.mjs +2 -0
  49. package/esm2022/util/block/src/block.mjs +64 -0
  50. package/esm2022/util/custom_pages/src/notFound.component.mjs +53 -110
  51. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +2 -3
  52. package/fesm2022/{aril-boot-mfe-app.component-zro0FnKY.mjs → aril-app.component-pGPjpk8x.mjs} +14 -7
  53. package/fesm2022/aril-app.component-pGPjpk8x.mjs.map +1 -0
  54. package/fesm2022/aril-boot-config.mjs +26 -0
  55. package/fesm2022/aril-boot-config.mjs.map +1 -0
  56. package/fesm2022/aril-boot-host.mjs +14 -13
  57. package/fesm2022/aril-boot-host.mjs.map +1 -1
  58. package/fesm2022/{aril-app.component-sZDpvJDM.mjs → aril-boot-mfe-app.component-h5TW-GVW.mjs} +13 -6
  59. package/fesm2022/aril-boot-mfe-app.component-h5TW-GVW.mjs.map +1 -0
  60. package/fesm2022/aril-boot-mfe-aril-boot-mfe-7ZwVVddO.mjs +92 -0
  61. package/fesm2022/aril-boot-mfe-aril-boot-mfe-7ZwVVddO.mjs.map +1 -0
  62. package/fesm2022/aril-boot-mfe.mjs +13 -81
  63. package/fesm2022/aril-boot-mfe.mjs.map +1 -1
  64. package/fesm2022/aril-http.mjs +140 -45
  65. package/fesm2022/aril-http.mjs.map +1 -1
  66. package/fesm2022/aril-i18n.mjs +3 -3
  67. package/fesm2022/aril-i18n.mjs.map +1 -1
  68. package/fesm2022/aril-keycloak.mjs +58 -3
  69. package/fesm2022/aril-keycloak.mjs.map +1 -1
  70. package/fesm2022/aril-theme-layout.mjs +11 -7
  71. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  72. package/fesm2022/aril-ui-button.mjs.map +1 -1
  73. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  74. package/fesm2022/aril-util-block.mjs +71 -0
  75. package/fesm2022/aril-util-block.mjs.map +1 -0
  76. package/fesm2022/aril-util-custom_pages.mjs +52 -109
  77. package/fesm2022/aril-util-custom_pages.mjs.map +1 -1
  78. package/fesm2022/aril-util-pub-sub.mjs +1 -2
  79. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  80. package/fesm2022/aril.mjs +215 -16
  81. package/fesm2022/aril.mjs.map +1 -1
  82. package/http/index.d.ts +1 -0
  83. package/http/lib/enums.d.ts +4 -2
  84. package/http/src/httpClient.d.ts +2 -4
  85. package/http/src/serviceBase.d.ts +4 -2
  86. package/http/src/serviceMockBase.d.ts +6 -0
  87. package/http/src/serviceRequest.d.ts +4 -0
  88. package/http/src/serviceStateMethods.d.ts +11 -2
  89. package/i18n/index.d.ts +1 -1
  90. package/i18n/src/folder-name-token.d.ts +2 -0
  91. package/i18n/src/provideScope.d.ts +0 -4
  92. package/keycloak/index.d.ts +1 -0
  93. package/keycloak/src/auth.guard.d.ts +11 -0
  94. package/keycloak/src/keycloak.manager.d.ts +1 -0
  95. package/package.json +13 -1
  96. package/public-api.d.ts +0 -1
  97. package/scripts/util/blockui.min.js +7 -0
  98. package/styles/util/blockui.css +56 -0
  99. package/theme/layout/app/profileSidebar/app.profilesidebar.component.d.ts +3 -0
  100. package/theme/layout/app/profileSidebar/app.profilesidebar.component.html +151 -152
  101. package/theme/layout/app/profileSidebar/app.profilesidebar.component.ts +31 -24
  102. package/theme/layout/app/topbar/app.topbar.component.html +45 -45
  103. package/theme/layout/app/topbar/app.topbar.component.ts +32 -32
  104. package/theme/layout/service/app.layout.service.ts +178 -178
  105. package/theme/layout/service/app.menu.service.ts +2 -0
  106. package/ui/button/src/button.component.d.ts +1 -1
  107. package/ui/lib/src/input/common-input-validators.service.d.ts +2 -1
  108. package/util/block/index.d.ts +1 -0
  109. package/util/block/src/block.d.ts +28 -0
  110. package/util/pub-sub/src/pub-sub.service.d.ts +1 -2
  111. package/esm2022/boot/host/src/services/custom-manifest.mjs +0 -2
  112. package/esm2022/i18n/src/file-url-token.mjs +0 -3
  113. package/fesm2022/aril-app.component-sZDpvJDM.mjs.map +0 -1
  114. package/fesm2022/aril-aril-D__IXMsf.mjs +0 -207
  115. package/fesm2022/aril-aril-D__IXMsf.mjs.map +0 -1
  116. package/fesm2022/aril-boot-mfe-app.component-zro0FnKY.mjs.map +0 -1
  117. package/i18n/src/file-url-token.d.ts +0 -2
@@ -1,82 +1,14 @@
1
- import { provideHttpClient, withInterceptors } from '@angular/common/http';
2
- import { importProvidersFrom, NgZone, APP_INITIALIZER } from '@angular/core';
3
- import { createCustomElement } from '@angular/elements';
4
- import { createApplication } from '@angular/platform-browser';
5
- import { provideAnimations } from '@angular/platform-browser/animations';
6
- import { MessageService, ConfirmationService } from 'primeng/api';
7
- import { KeycloakAngularModule } from 'keycloak-angular';
8
- import { API_TOKEN } from 'aril/http';
9
- import { i18nModule, i18nRootFileUrl } from 'aril/i18n';
10
- import { authInterceptor, KeycloakManager } from 'aril/keycloak';
11
- import { StyleLoaderService } from 'aril/util/loaders';
12
-
13
- var appName;
14
- var menuItems = [];
15
- const appComponentLoader = async () => {
16
- const { AppComponent } = await import('./aril-boot-mfe-app.component-zro0FnKY.mjs');
17
- return AppComponent;
18
- };
19
- function loadStylesheets(styleLoaderService) {
20
- const styles = [
21
- 'layout.css',
22
- 'ui.common.css',
23
- 'preloading.css',
24
- 'theme.light.indigo.css',
25
- `assets/${appName}/styles/primeng.min.css`,
26
- `assets/${appName}/styles/primeflex/primeflex.min.css`,
27
- `assets/${appName}/styles/primeicons/primeicons.css`,
28
- `assets/${appName}/styles/dx.fluent.saas.light.css`
29
- ];
30
- if (globalThis.isMFEMode)
31
- return () => Promise.resolve();
32
- return () => styleLoaderService.load(styles);
33
- }
34
- const boot = (_appName, _routerProvider, _menuItems, _options, _apiURL = '') => {
35
- appName = _appName;
36
- menuItems = _menuItems;
37
- const appConfig = {
38
- providers: [
39
- provideAnimations(),
40
- provideHttpClient(withInterceptors([authInterceptor])),
41
- _routerProvider,
42
- importProvidersFrom(i18nModule, KeycloakAngularModule),
43
- MessageService,
44
- ConfirmationService,
45
- globalThis.ngZone ? { provide: NgZone, useValue: globalThis.ngZone } : [],
46
- {
47
- provide: APP_INITIALIZER,
48
- useFactory: (keycloak) => keycloak.init(_options),
49
- multi: true,
50
- deps: [KeycloakManager]
51
- },
52
- {
53
- provide: APP_INITIALIZER,
54
- useFactory: loadStylesheets,
55
- multi: true,
56
- deps: [StyleLoaderService]
57
- },
58
- {
59
- provide: API_TOKEN,
60
- useValue: _apiURL
61
- // useValue: isDevMode() ? 'http://thor.edas1.com/crm/v1' : _appName + '/v1'
62
- },
63
- {
64
- provide: i18nRootFileUrl,
65
- useValue: _appName
66
- }
67
- ]
68
- };
69
- createApplication(appConfig).then((appRef) => {
70
- appComponentLoader().then((AppComponent) => {
71
- const app = createCustomElement(AppComponent, { injector: appRef.injector });
72
- customElements.define(`app-${appName}`, app);
73
- });
74
- });
75
- };
76
-
77
- /**
78
- * Generated bundle index. Do not edit.
79
- */
80
-
81
- export { appName, boot, menuItems };
1
+ export { b as boot } from './aril-boot-mfe-aril-boot-mfe-7ZwVVddO.mjs';
2
+ import '@angular/common/http';
3
+ import '@angular/core';
4
+ import '@angular/elements';
5
+ import '@angular/platform-browser';
6
+ import '@angular/platform-browser/animations';
7
+ import '@angular/router';
8
+ import 'primeng/api';
9
+ import 'keycloak-angular';
10
+ import 'aril/boot/config';
11
+ import 'aril/i18n';
12
+ import 'aril/keycloak';
13
+ import 'aril/util/loaders';
82
14
  //# sourceMappingURL=aril-boot-mfe.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aril-boot-mfe.mjs","sources":["../../projects/aril/boot/mfe/src/bootstrap.ts","../../projects/aril/boot/mfe/aril-boot-mfe.ts"],"sourcesContent":["import { provideHttpClient, withInterceptors } from '@angular/common/http';\r\nimport {\r\n\tAPP_INITIALIZER,\r\n\tApplicationConfig,\r\n\tEnvironmentProviders,\r\n\tNgZone,\r\n\timportProvidersFrom,\r\n\tisDevMode\r\n} from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { createApplication } from '@angular/platform-browser';\r\nimport { provideAnimations } from '@angular/platform-browser/animations';\r\n\r\nimport { ConfirmationService, MenuItem, MessageService } from 'primeng/api';\r\n\r\nimport { KeycloakAngularModule, KeycloakOptions } from 'keycloak-angular';\r\n\r\nimport { API_TOKEN, APIs } from 'aril/http';\r\nimport { i18nModule, i18nRootFileUrl } from 'aril/i18n';\r\nimport { KeycloakManager, authInterceptor } from 'aril/keycloak';\r\nimport { StyleLoaderService } from 'aril/util/loaders';\r\n\r\nexport var appName: APIs | undefined;\r\nexport var menuItems: MenuItem[] = [];\r\n\r\nconst appComponentLoader = async () => {\r\n\tconst { AppComponent } = await import('./app.component');\r\n\treturn AppComponent;\r\n};\r\n\r\nfunction loadStylesheets(styleLoaderService: StyleLoaderService): () => Promise<any> {\r\n\tconst styles = [\r\n\t\t'layout.css',\r\n\t\t'ui.common.css',\r\n\t\t'preloading.css',\r\n\t\t'theme.light.indigo.css',\r\n\t\t`assets/${appName}/styles/primeng.min.css`,\r\n\t\t`assets/${appName}/styles/primeflex/primeflex.min.css`,\r\n\t\t`assets/${appName}/styles/primeicons/primeicons.css`,\r\n\t\t`assets/${appName}/styles/dx.fluent.saas.light.css`\r\n\t];\r\n\r\n\tif ((<any>globalThis).isMFEMode) return () => Promise.resolve();\r\n\r\n\treturn () => styleLoaderService.load(styles);\r\n}\r\n\r\nexport const boot = (\r\n\t_appName: APIs | undefined,\r\n\t_routerProvider: EnvironmentProviders,\r\n\t_menuItems: MenuItem[],\r\n\t_options: KeycloakOptions,\r\n\t_apiURL: string = ''\r\n) => {\r\n\tappName = _appName;\r\n\tmenuItems = _menuItems;\r\n\r\n\tconst appConfig: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tprovideAnimations(),\r\n\t\t\tprovideHttpClient(withInterceptors([authInterceptor])),\r\n\t\t\t_routerProvider,\r\n\t\t\timportProvidersFrom(i18nModule, KeycloakAngularModule),\r\n\t\t\tMessageService,\r\n\t\t\tConfirmationService,\r\n\t\t\t(<any>globalThis).ngZone ? { provide: NgZone, useValue: (<any>globalThis).ngZone } : [],\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (keycloak: KeycloakManager) => keycloak.init(_options),\r\n\t\t\t\tmulti: true,\r\n\t\t\t\tdeps: [KeycloakManager]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: loadStylesheets,\r\n\t\t\t\tmulti: true,\r\n\t\t\t\tdeps: [StyleLoaderService]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tprovide: API_TOKEN,\r\n\t\t\t\tuseValue: _apiURL\r\n\t\t\t\t// useValue: isDevMode() ? 'http://thor.edas1.com/crm/v1' : _appName + '/v1'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tprovide: i18nRootFileUrl,\r\n\t\t\t\tuseValue: _appName\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n\r\n\tcreateApplication(appConfig).then((appRef) => {\r\n\t\tappComponentLoader().then((AppComponent) => {\r\n\t\t\tconst app = createCustomElement(AppComponent, { injector: appRef.injector });\r\n\t\t\tcustomElements.define(`app-${appName}`, app);\r\n\t\t});\r\n\t});\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAsBW,IAAA,QAA0B;AAC9B,IAAI,SAAS,GAAe,GAAG;AAEtC,MAAM,kBAAkB,GAAG,YAAW;IACrC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,OAAO,4CAAiB,CAAC,CAAC;AACzD,IAAA,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF,SAAS,eAAe,CAAC,kBAAsC,EAAA;AAC9D,IAAA,MAAM,MAAM,GAAG;QACd,YAAY;QACZ,eAAe;QACf,gBAAgB;QAChB,wBAAwB;AACxB,QAAA,CAAA,OAAA,EAAU,OAAO,CAAyB,uBAAA,CAAA;AAC1C,QAAA,CAAA,OAAA,EAAU,OAAO,CAAqC,mCAAA,CAAA;AACtD,QAAA,CAAA,OAAA,EAAU,OAAO,CAAmC,iCAAA,CAAA;AACpD,QAAA,CAAA,OAAA,EAAU,OAAO,CAAkC,gCAAA,CAAA;KACnD,CAAC;IAEF,IAAU,UAAW,CAAC,SAAS;AAAE,QAAA,OAAO,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAEhE,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAEY,MAAA,IAAI,GAAG,CACnB,QAA0B,EAC1B,eAAqC,EACrC,UAAsB,EACtB,QAAyB,EACzB,OAAkB,GAAA,EAAE,KACjB;IACH,OAAO,GAAG,QAAQ,CAAC;IACnB,SAAS,GAAG,UAAU,CAAC;AAEvB,IAAA,MAAM,SAAS,GAAsB;AACpC,QAAA,SAAS,EAAE;AACV,YAAA,iBAAiB,EAAE;AACnB,YAAA,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YACtD,eAAe;AACf,YAAA,mBAAmB,CAAC,UAAU,EAAE,qBAAqB,CAAC;YACtD,cAAc;YACd,mBAAmB;AACb,YAAA,UAAW,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAQ,UAAW,CAAC,MAAM,EAAE,GAAG,EAAE;AACvF,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;gBACxB,UAAU,EAAE,CAAC,QAAyB,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClE,gBAAA,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,CAAC,eAAe,CAAC;AACvB,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,UAAU,EAAE,eAAe;AAC3B,gBAAA,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,CAAC,kBAAkB,CAAC;AAC1B,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,OAAO;;AAEjB,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,aAAA;AACD,SAAA;KACD,CAAC;IAEF,iBAAiB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC5C,QAAA,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC1C,YAAA,MAAM,GAAG,GAAG,mBAAmB,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7E,cAAc,CAAC,MAAM,CAAC,CAAA,IAAA,EAAO,OAAO,CAAE,CAAA,EAAE,GAAG,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;AACJ,KAAC,CAAC,CAAC;AACJ;;AChGA;;AAEG;;;;"}
1
+ {"version":3,"file":"aril-boot-mfe.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,9 +1,11 @@
1
1
  import { HttpClient, HttpParams } from '@angular/common/http';
2
- import { InjectionToken, inject, Injector, runInInjectionContext } from '@angular/core';
3
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
2
+ import { inject, Injector, runInInjectionContext } from '@angular/core';
4
3
  import { MessageService } from 'primeng/api';
4
+ import { TranslocoService } from '@ngneat/transloco';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
6
  import { Observable, of } from 'rxjs';
6
7
  import { map, tap, catchError } from 'rxjs/operators';
8
+ import { APP_CONFIGS } from 'aril/boot/config';
7
9
 
8
10
  var HTTPMethods;
9
11
  (function (HTTPMethods) {
@@ -12,6 +14,7 @@ var HTTPMethods;
12
14
  HTTPMethods["POST"] = "POST";
13
15
  HTTPMethods["PUT"] = "PUT";
14
16
  HTTPMethods["DELETE"] = "DELETE";
17
+ HTTPMethods["DELETEBYPARAMS"] = "DELETEBYPARAMS";
15
18
  })(HTTPMethods || (HTTPMethods = {}));
16
19
  var APIs;
17
20
  (function (APIs) {
@@ -27,6 +30,7 @@ var APIs;
27
30
  APIs["HES"] = "hes";
28
31
  APIs["MTH"] = "mth";
29
32
  APIs["SIS"] = "sis";
33
+ APIs["MNG"] = "mng";
30
34
  })(APIs || (APIs = {}));
31
35
  var ProxyTypes;
32
36
  (function (ProxyTypes) {
@@ -51,13 +55,37 @@ class ServiceResponse extends ErrorResponse {
51
55
  }
52
56
 
53
57
  /* eslint-disable @typescript-eslint/no-explicit-any */
54
- const API_TOKEN = new InjectionToken('API');
55
58
  class RestClient {
56
59
  constructor() {
57
60
  this.httpClient = inject(HttpClient);
58
- this.baseAPI = inject(API_TOKEN);
59
61
  this.injector = inject(Injector);
62
+ this.messageService = inject(MessageService);
63
+ this.translocoService = inject(TranslocoService);
64
+ }
65
+ }
66
+
67
+ function getRequest(httpMethod, fn, args) {
68
+ if (args.length) {
69
+ const source = fn.toString();
70
+ const match = source.match(/\((.*?)\)/);
71
+ const paramNames = match ? match[1].split(',').map((param) => param.trim()) : [];
72
+ if (httpMethod === HTTPMethods.GETBYPARAMS || httpMethod === HTTPMethods.DELETEBYPARAMS) {
73
+ let queryParams = new HttpParams();
74
+ paramNames.forEach((paramName, index) => {
75
+ queryParams = queryParams.append(paramName, args[index]);
76
+ });
77
+ return queryParams;
78
+ }
79
+ else {
80
+ const params = {};
81
+ args.forEach((arg, index) => {
82
+ params[paramNames[index]] = arg;
83
+ });
84
+ return params;
85
+ }
60
86
  }
87
+ else
88
+ return undefined;
61
89
  }
62
90
 
63
91
  const callState = (states, serviceName) => {
@@ -68,35 +96,128 @@ const callState = (states, serviceName) => {
68
96
  serviceCallFailed: false
69
97
  };
70
98
  };
71
- const successState = (states, serviceName) => {
99
+ const successState = (states, serviceName, translocoService, messageService, message, response) => {
72
100
  states[serviceName] = {
73
101
  serviceCalled: true,
74
102
  waitingForResponse: false,
75
103
  responseIsRecieved: true,
76
104
  serviceCallFailed: false
77
105
  };
106
+ if (message?.success) {
107
+ messageService.add({
108
+ key: 'toast-root',
109
+ severity: 'success',
110
+ summary: getTranslatedMessage(message.success, translocoService, response)
111
+ });
112
+ }
78
113
  };
79
- const errorState = (states, serviceName) => {
114
+ const errorState = (states, serviceName, error, translocoService, messageService, message) => {
80
115
  states[serviceName] = {
81
116
  serviceCalled: true,
82
117
  waitingForResponse: false,
83
118
  responseIsRecieved: true,
84
119
  serviceCallFailed: true
85
120
  };
121
+ let httpError;
122
+ switch (error.status) {
123
+ case 400:
124
+ httpError = 'Bad Request';
125
+ break;
126
+ case 401:
127
+ httpError = 'Unauthorized';
128
+ break;
129
+ case 403:
130
+ httpError = 'Forbidden';
131
+ break;
132
+ case 404:
133
+ httpError = 'Not Found';
134
+ break;
135
+ case 405:
136
+ httpError = 'Method Not Allowed';
137
+ break;
138
+ case 406:
139
+ httpError = 'Not Acceptable';
140
+ break;
141
+ case 408:
142
+ httpError = 'Request Timeout';
143
+ break;
144
+ case 409:
145
+ httpError = 'Conflict';
146
+ break;
147
+ case 500:
148
+ httpError = 'Internal Server Error';
149
+ break;
150
+ case 501:
151
+ httpError = 'Not Implemented';
152
+ break;
153
+ case 502:
154
+ httpError = 'Bad Gateway';
155
+ break;
156
+ case 503:
157
+ httpError = 'Service Unavailable';
158
+ break;
159
+ case 504:
160
+ httpError = 'Gateway Timeout';
161
+ break;
162
+ case 505:
163
+ httpError = 'HTTP Version Not Supported';
164
+ break;
165
+ case 511:
166
+ httpError = 'Network Authentication Required';
167
+ break;
168
+ default:
169
+ httpError = error?.error?.message;
170
+ break;
171
+ }
172
+ messageService.add({
173
+ key: 'toast-root',
174
+ severity: 'error',
175
+ summary: httpError,
176
+ detail: error?.error?.message
177
+ });
178
+ if (message?.error) {
179
+ messageService.add({
180
+ key: 'toast-root',
181
+ severity: 'error',
182
+ summary: getTranslatedMessage(message.error, translocoService)
183
+ });
184
+ }
185
+ console.error(error);
186
+ };
187
+ const getTranslatedMessage = (messageCode, translocoService, response) => {
188
+ const translateObject = translocoService.getTranslation().get(translocoService.getActiveLang());
189
+ let translatedMessage = translateObject?.[messageCode] ?? messageCode;
190
+ const paramStartSymbol = '{{';
191
+ const paramEndSymbol = '}}';
192
+ if (response && translatedMessage.includes(paramStartSymbol) && translatedMessage.includes(paramEndSymbol)) {
193
+ do {
194
+ let paramStartIndex = translatedMessage.indexOf(paramStartSymbol);
195
+ let paramEndIndex = translatedMessage.indexOf(paramEndSymbol);
196
+ let paramKey = translatedMessage.slice(paramStartIndex + paramStartSymbol.length, paramEndIndex);
197
+ // Splitting the key to get nested object values
198
+ let paramKeyList = paramKey.split('.');
199
+ let paramValue;
200
+ for (let key of paramKeyList) {
201
+ paramValue = paramValue ? paramValue[key] : response[key];
202
+ }
203
+ let replacePattern = `${paramStartSymbol}${paramKey}${paramEndSymbol}`;
204
+ translatedMessage = translatedMessage.replace(replacePattern, paramValue);
205
+ } while (translatedMessage.includes(paramStartSymbol));
206
+ }
207
+ return translatedMessage;
86
208
  };
87
209
 
88
- /* eslint-disable @typescript-eslint/no-explicit-any */
89
- function ServiceCall(httpMethod, proxy, serviceURL, remoteAPI) {
210
+ function ServiceCall(httpMethod, proxy, serviceURL, message, remoteAPI) {
90
211
  return function (serviceClass, serviceName, descriptor) {
91
212
  const originalFunction = descriptor.value;
92
213
  descriptor.value = function (...args) {
93
214
  return runInInjectionContext(this.injector, () => {
94
215
  const httpClient = this.httpClient;
95
- const api = remoteAPI ?? this.baseAPI;
216
+ const api = remoteAPI ?? APP_CONFIGS.api;
96
217
  const endPoint = api + '/' + serviceURL;
97
218
  const request = getRequest(httpMethod, originalFunction, args);
98
219
  const states = this.states;
99
- const messageService = inject(MessageService);
220
+ // TODO: keycloak check auth & refresh token
100
221
  callState(states, serviceName);
101
222
  let observable = new Observable();
102
223
  switch (httpMethod) {
@@ -116,16 +237,12 @@ function ServiceCall(httpMethod, proxy, serviceURL, remoteAPI) {
116
237
  case HTTPMethods.DELETE:
117
238
  observable = httpClient.delete(endPoint + '/' + args[0], { responseType: 'json' });
118
239
  break;
240
+ case HTTPMethods.DELETEBYPARAMS:
241
+ observable = httpClient.delete(endPoint, { params: request, responseType: 'json' });
242
+ break;
119
243
  }
120
- observable = observable.pipe(map((response) => new ServiceResponse(request, response, proxy)), tap(() => successState(states, serviceName)), catchError((error) => {
121
- errorState(states, serviceName);
122
- console.error(error);
123
- messageService.add({
124
- key: 'toast-root',
125
- severity: 'error',
126
- summary: 'Error',
127
- detail: error?.error?.message
128
- });
244
+ observable = observable.pipe(map((response) => new ServiceResponse(request, response, proxy)), tap((resp) => successState(states, serviceName, this.translocoService, this.messageService, message, resp.response)), catchError((error) => {
245
+ errorState(states, serviceName, error, this.translocoService, this.messageService, message);
129
246
  return of(new ErrorResponse(error));
130
247
  }), takeUntilDestroyed());
131
248
  return observable;
@@ -133,31 +250,9 @@ function ServiceCall(httpMethod, proxy, serviceURL, remoteAPI) {
133
250
  };
134
251
  };
135
252
  }
136
- function ServiceCallMock(httpMethod, proxy, serviceURL, mockAPI) {
137
- return ServiceCall(httpMethod, proxy, serviceURL, mockAPI);
138
- }
139
- function getRequest(httpMethod, fn, args) {
140
- if (args.length) {
141
- const source = fn.toString();
142
- const match = source.match(/\((.*?)\)/);
143
- const paramNames = match ? match[1].split(',').map((param) => param.trim()) : [];
144
- if (httpMethod === HTTPMethods.GETBYPARAMS) {
145
- let queryParams = new HttpParams();
146
- paramNames.forEach((paramName, index) => {
147
- queryParams = queryParams.append(paramName, args[index]);
148
- });
149
- return queryParams;
150
- }
151
- else {
152
- const params = {};
153
- args.forEach((arg, index) => {
154
- params[paramNames[index]] = arg;
155
- });
156
- return params;
157
- }
158
- }
159
- else
160
- return undefined;
253
+
254
+ function ServiceCallMock(httpMethod, proxy, serviceURL, mockAPI, message) {
255
+ return ServiceCall(httpMethod, proxy, serviceURL, message, mockAPI);
161
256
  }
162
257
 
163
258
  /* lib */
@@ -166,5 +261,5 @@ function getRequest(httpMethod, fn, args) {
166
261
  * Generated bundle index. Do not edit.
167
262
  */
168
263
 
169
- export { API_TOKEN, APIs, ErrorResponse, HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallMock, ServiceResponse, callState, errorState, successState };
264
+ export { APIs, ErrorResponse, HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallMock, ServiceResponse, callState, errorState, successState };
170
265
  //# sourceMappingURL=aril-http.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aril-http.mjs","sources":["../../projects/aril/http/lib/enums.ts","../../projects/aril/http/lib/interfaces.ts","../../projects/aril/http/src/httpClient.ts","../../projects/aril/http/src/serviceStateMethods.ts","../../projects/aril/http/src/serviceBase.ts","../../projects/aril/http/index.ts","../../projects/aril/http/aril-http.ts"],"sourcesContent":["export enum HTTPMethods {\n\tGET = 'GET',\n\tGETBYPARAMS = 'GETBYPARAMS',\n\tPOST = 'POST',\n\tPUT = 'PUT',\n\tDELETE = 'DELETE'\n}\n\nexport enum APIs {\n\tTHOR = 'thor',\n\tCRM = 'crm',\n\tWDM = 'wdm',\n\tBILLING = 'billing',\n\tPAYMENT = 'payment',\n\tYEAP = 'yeap',\n\tMD = 'md',\n\tMW = 'mw',\n\tLENA = 'lena',\n\tHES = 'hes',\n\tMTH = 'mth',\n\tSIS = 'sis'\n}\n\nexport enum ProxyTypes {\n\tNative,\n\tServerSide,\n\tClientSide\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/ban-types */\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { ProxyTypes } from './enums';\n\nexport interface ServiceCallStates {\n\tserviceCalled: boolean;\n\twaitingForResponse: boolean;\n\tresponseIsRecieved: boolean;\n\tserviceCallFailed: boolean;\n}\n\nexport type ServiceCallStateMap<T> = {\n\t[K in keyof T]?: T[K] extends Function ? ServiceCallStates : never;\n};\n\nexport class ErrorResponse {\n\terror: HttpErrorResponse | undefined;\n\n\tconstructor(err: HttpErrorResponse | undefined) {\n\t\tthis.error = err;\n\t}\n}\n\nexport class ServiceResponse<T> extends ErrorResponse {\n\trequest: any;\n\tresponse: T;\n\tproxy: ProxyTypes;\n\n\tconstructor(request: any, response: T, proxy: ProxyTypes) {\n\t\tsuper(undefined);\n\t\tthis.request = request;\n\t\tthis.response = response;\n\t\tthis.proxy = proxy;\n\t}\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClient } from '@angular/common/http';\nimport { InjectionToken, Injector, inject } from '@angular/core';\n\nimport { APIs } from '../lib/enums';\nimport { ServiceCallStateMap } from '../lib/interfaces';\n\nexport const API_TOKEN = new InjectionToken<APIs>('API');\n\nexport abstract class RestClient {\n\tprivate readonly httpClient = inject(HttpClient);\n\tprivate readonly baseAPI = inject(API_TOKEN);\n\tprivate readonly injector = inject(Injector);\n\n\tabstract states: ServiceCallStateMap<any>;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ServiceCallStateMap } from '../lib/interfaces';\n\nexport const callState = (states: ServiceCallStateMap<any>, serviceName: any): void => {\n\tstates[serviceName] = {\n\t\tserviceCalled: true,\n\t\twaitingForResponse: true,\n\t\tresponseIsRecieved: false,\n\t\tserviceCallFailed: false\n\t};\n};\nexport const successState = (states: ServiceCallStateMap<any>, serviceName: any): void => {\n\tstates[serviceName] = {\n\t\tserviceCalled: true,\n\t\twaitingForResponse: false,\n\t\tresponseIsRecieved: true,\n\t\tserviceCallFailed: false\n\t};\n};\nexport const errorState = (states: ServiceCallStateMap<any>, serviceName: any): void => {\n\tstates[serviceName] = {\n\t\tserviceCalled: true,\n\t\twaitingForResponse: false,\n\t\tresponseIsRecieved: true,\n\t\tserviceCallFailed: true\n\t};\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { inject, runInInjectionContext } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { MessageService } from 'primeng/api';\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\n\r\nimport { Interfaces } from 'aril/util/lib';\r\n\r\nimport { APIs, HTTPMethods, ProxyTypes } from '../lib/enums';\r\nimport { ErrorResponse, ServiceCallStateMap, ServiceResponse } from '../lib/interfaces';\r\nimport { callState, errorState, successState } from './serviceStateMethods';\r\n\r\nexport function ServiceCall(\r\n\thttpMethod: HTTPMethods,\r\n\tproxy: ProxyTypes,\r\n\tserviceURL: string,\r\n\tremoteAPI?: APIs\r\n): MethodDecorator {\r\n\treturn function (serviceClass: object, serviceName: string | symbol, descriptor: PropertyDescriptor) {\r\n\t\tconst originalFunction = descriptor.value;\r\n\r\n\t\tdescriptor.value = function (...args: any[]) {\r\n\t\t\treturn runInInjectionContext((<any>this).injector, () => {\r\n\t\t\t\tconst httpClient: HttpClient = (<any>this).httpClient;\r\n\t\t\t\tconst api: APIs = remoteAPI ?? (<any>this).baseAPI;\r\n\t\t\t\tconst endPoint: string = api + '/' + serviceURL;\r\n\t\t\t\tconst request = getRequest(httpMethod, originalFunction, args);\r\n\t\t\t\tconst states: ServiceCallStateMap<any> = (<any>this).states;\r\n\t\t\t\tconst messageService = inject(MessageService);\r\n\r\n\t\t\t\tcallState(states, serviceName);\r\n\r\n\t\t\t\tlet observable: Observable<any> = new Observable<any>();\r\n\r\n\t\t\t\tswitch (httpMethod) {\r\n\t\t\t\t\tcase HTTPMethods.GET:\r\n\t\t\t\t\t\tlet getReq = args.length ? '/' + args[0] : '';\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(endPoint + getReq, { responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.GETBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(endPoint, { params: request as HttpParams, responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.POST:\r\n\t\t\t\t\t\tobservable = httpClient.post<any>(endPoint, args[0], { responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.PUT:\r\n\t\t\t\t\t\tobservable = httpClient.put<any>(endPoint + '/' + args[0], request, { responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.DELETE:\r\n\t\t\t\t\t\tobservable = httpClient.delete<any>(endPoint + '/' + args[0], { responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tobservable = observable.pipe(\r\n\t\t\t\t\tmap((response) => new ServiceResponse(request, response, proxy)),\r\n\t\t\t\t\ttap(() => successState(states, serviceName)),\r\n\t\t\t\t\tcatchError((error: HttpErrorResponse) => {\r\n\t\t\t\t\t\terrorState(states, serviceName);\r\n\t\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t\t\tmessageService.add({\r\n\t\t\t\t\t\t\tkey: 'toast-root',\r\n\t\t\t\t\t\t\tseverity: 'error',\r\n\t\t\t\t\t\t\tsummary: 'Error',\r\n\t\t\t\t\t\t\tdetail: error?.error?.message\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn of(new ErrorResponse(error));\r\n\t\t\t\t\t}),\r\n\t\t\t\t\ttakeUntilDestroyed()\r\n\t\t\t\t);\r\n\r\n\t\t\t\treturn observable;\r\n\t\t\t});\r\n\t\t};\r\n\t};\r\n}\r\n\r\nexport function ServiceCallMock(httpMethod: HTTPMethods, proxy: ProxyTypes, serviceURL: string, mockAPI: string) {\r\n\treturn ServiceCall(httpMethod, proxy, serviceURL, <APIs>mockAPI);\r\n}\r\n\r\nfunction getRequest(\r\n\thttpMethod: HTTPMethods,\r\n\tfn: () => any,\r\n\targs: any[]\r\n): HttpParams | Interfaces.MapStringString | undefined {\r\n\tif (args.length) {\r\n\t\tconst source = fn.toString();\r\n\t\tconst match = source.match(/\\((.*?)\\)/);\r\n\t\tconst paramNames = match ? match[1].split(',').map((param) => param.trim()) : [];\r\n\r\n\t\tif (httpMethod === HTTPMethods.GETBYPARAMS) {\r\n\t\t\tlet queryParams = new HttpParams();\r\n\r\n\t\t\tparamNames.forEach((paramName, index) => {\r\n\t\t\t\tqueryParams = queryParams.append(paramName, args[index]);\r\n\t\t\t});\r\n\t\t\treturn queryParams;\r\n\t\t} else {\r\n\t\t\tconst params: Interfaces.MapStringString = {};\r\n\r\n\t\t\targs.forEach((arg, index) => {\r\n\t\t\t\tparams[paramNames[index]] = arg;\r\n\t\t\t});\r\n\r\n\t\t\treturn params;\r\n\t\t}\r\n\t} else return undefined;\r\n}\r\n","/* lib */\nexport * from './lib/enums';\nexport * from './lib/interfaces';\n\n/* src */\nexport * from './src/httpClient';\nexport * from './src/serviceBase';\nexport * from './src/serviceStateMethods';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aril-http.mjs","sources":["../../projects/aril/http/lib/enums.ts","../../projects/aril/http/lib/interfaces.ts","../../projects/aril/http/src/httpClient.ts","../../projects/aril/http/src/serviceRequest.ts","../../projects/aril/http/src/serviceStateMethods.ts","../../projects/aril/http/src/serviceBase.ts","../../projects/aril/http/src/serviceMockBase.ts","../../projects/aril/http/index.ts","../../projects/aril/http/aril-http.ts"],"sourcesContent":["export enum HTTPMethods {\r\n\tGET = 'GET',\r\n\tGETBYPARAMS = 'GETBYPARAMS',\r\n\tPOST = 'POST',\r\n\tPUT = 'PUT',\r\n\tDELETE = 'DELETE',\r\n\tDELETEBYPARAMS = 'DELETEBYPARAMS'\r\n}\r\n\r\nexport enum APIs {\r\n\tTHOR = 'thor',\r\n\tCRM = 'crm',\r\n\tWDM = 'wdm',\r\n\tBILLING = 'billing',\r\n\tPAYMENT = 'payment',\r\n\tYEAP = 'yeap',\r\n\tMD = 'md',\r\n\tMW = 'mw',\r\n\tLENA = 'lena',\r\n\tHES = 'hes',\r\n\tMTH = 'mth',\r\n\tSIS = 'sis',\r\n\tMNG = 'mng'\r\n}\r\n\r\nexport enum ProxyTypes {\r\n\tNative,\r\n\tServerSide,\r\n\tClientSide\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/ban-types */\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { ProxyTypes } from './enums';\n\nexport interface ServiceCallStates {\n\tserviceCalled: boolean;\n\twaitingForResponse: boolean;\n\tresponseIsRecieved: boolean;\n\tserviceCallFailed: boolean;\n}\n\nexport type ServiceCallStateMap<T> = {\n\t[K in keyof T]?: T[K] extends Function ? ServiceCallStates : never;\n};\n\nexport class ErrorResponse {\n\terror: HttpErrorResponse | undefined;\n\n\tconstructor(err: HttpErrorResponse | undefined) {\n\t\tthis.error = err;\n\t}\n}\n\nexport class ServiceResponse<T> extends ErrorResponse {\n\trequest: any;\n\tresponse: T;\n\tproxy: ProxyTypes;\n\n\tconstructor(request: any, response: T, proxy: ProxyTypes) {\n\t\tsuper(undefined);\n\t\tthis.request = request;\n\t\tthis.response = response;\n\t\tthis.proxy = proxy;\n\t}\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClient } from '@angular/common/http';\nimport { Injector, inject } from '@angular/core';\n\nimport { MessageService } from 'primeng/api';\n\nimport { TranslocoService } from '@ngneat/transloco';\n\n// import { KeycloakService } from 'keycloak-angular';\nimport { ServiceCallStateMap } from '../lib/interfaces';\n\nexport abstract class RestClient {\n\tprivate readonly httpClient = inject(HttpClient);\n\tprivate readonly injector = inject(Injector);\n\tprivate readonly messageService = inject(MessageService);\n\tprivate readonly translocoService = inject(TranslocoService);\n\t// private readonly keycloak = inject(KeycloakService);\n\n\tabstract states: ServiceCallStateMap<any>;\n}\n","import { HttpParams } from '@angular/common/http';\r\n\r\nimport { Interfaces } from 'aril/util/lib';\r\n\r\nimport { HTTPMethods } from '../lib/enums';\r\n\r\nexport function getRequest(\r\n\thttpMethod: HTTPMethods,\r\n\tfn: () => any,\r\n\targs: any[]\r\n): HttpParams | Interfaces.MapStringString | undefined {\r\n\tif (args.length) {\r\n\t\tconst source = fn.toString();\r\n\t\tconst match = source.match(/\\((.*?)\\)/);\r\n\t\tconst paramNames = match ? match[1].split(',').map((param) => param.trim()) : [];\r\n\r\n\t\tif (httpMethod === HTTPMethods.GETBYPARAMS || httpMethod === HTTPMethods.DELETEBYPARAMS) {\r\n\t\t\tlet queryParams = new HttpParams();\r\n\r\n\t\t\tparamNames.forEach((paramName, index) => {\r\n\t\t\t\tqueryParams = queryParams.append(paramName, args[index]);\r\n\t\t\t});\r\n\t\t\treturn queryParams;\r\n\t\t} else {\r\n\t\t\tconst params: Interfaces.MapStringString = {};\r\n\r\n\t\t\targs.forEach((arg, index) => {\r\n\t\t\t\tparams[paramNames[index]] = arg;\r\n\t\t\t});\r\n\r\n\t\t\treturn params;\r\n\t\t}\r\n\t} else return undefined;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpErrorResponse } from '@angular/common/http';\n\nimport { MessageService } from 'primeng/api';\n\nimport { TranslocoService } from '@ngneat/transloco';\n\nimport { ServiceCallStateMap } from '../lib/interfaces';\n\nexport const callState = (states: ServiceCallStateMap<any>, serviceName: any): void => {\n\tstates[serviceName] = {\n\t\tserviceCalled: true,\n\t\twaitingForResponse: true,\n\t\tresponseIsRecieved: false,\n\t\tserviceCallFailed: false\n\t};\n};\n\nexport const successState = (\n\tstates: ServiceCallStateMap<any>,\n\tserviceName: any,\n\ttranslocoService: TranslocoService,\n\tmessageService: MessageService,\n\tmessage?: { success?: string; error?: string },\n\tresponse?: any\n): void => {\n\tstates[serviceName] = {\n\t\tserviceCalled: true,\n\t\twaitingForResponse: false,\n\t\tresponseIsRecieved: true,\n\t\tserviceCallFailed: false\n\t};\n\n\tif (message?.success) {\n\t\tmessageService.add({\n\t\t\tkey: 'toast-root',\n\t\t\tseverity: 'success',\n\t\t\tsummary: getTranslatedMessage(<string>message.success, translocoService, response)\n\t\t});\n\t}\n};\n\nexport const errorState = (\n\tstates: ServiceCallStateMap<any>,\n\tserviceName: any,\n\terror: HttpErrorResponse,\n\ttranslocoService: TranslocoService,\n\tmessageService: MessageService,\n\tmessage?: { success?: string; error?: string }\n): void => {\n\tstates[serviceName] = {\n\t\tserviceCalled: true,\n\t\twaitingForResponse: false,\n\t\tresponseIsRecieved: true,\n\t\tserviceCallFailed: true\n\t};\n\n\tlet httpError: string;\n\n\tswitch (error.status) {\n\t\tcase 400:\n\t\t\thttpError = 'Bad Request';\n\t\t\tbreak;\n\t\tcase 401:\n\t\t\thttpError = 'Unauthorized';\n\t\t\tbreak;\n\t\tcase 403:\n\t\t\thttpError = 'Forbidden';\n\t\t\tbreak;\n\t\tcase 404:\n\t\t\thttpError = 'Not Found';\n\t\t\tbreak;\n\t\tcase 405:\n\t\t\thttpError = 'Method Not Allowed';\n\t\t\tbreak;\n\t\tcase 406:\n\t\t\thttpError = 'Not Acceptable';\n\t\t\tbreak;\n\t\tcase 408:\n\t\t\thttpError = 'Request Timeout';\n\t\t\tbreak;\n\t\tcase 409:\n\t\t\thttpError = 'Conflict';\n\t\t\tbreak;\n\t\tcase 500:\n\t\t\thttpError = 'Internal Server Error';\n\t\t\tbreak;\n\t\tcase 501:\n\t\t\thttpError = 'Not Implemented';\n\t\t\tbreak;\n\t\tcase 502:\n\t\t\thttpError = 'Bad Gateway';\n\t\t\tbreak;\n\t\tcase 503:\n\t\t\thttpError = 'Service Unavailable';\n\t\t\tbreak;\n\t\tcase 504:\n\t\t\thttpError = 'Gateway Timeout';\n\t\t\tbreak;\n\t\tcase 505:\n\t\t\thttpError = 'HTTP Version Not Supported';\n\t\t\tbreak;\n\t\tcase 511:\n\t\t\thttpError = 'Network Authentication Required';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\thttpError = error?.error?.message;\n\t\t\tbreak;\n\t}\n\n\tmessageService.add({\n\t\tkey: 'toast-root',\n\t\tseverity: 'error',\n\t\tsummary: httpError,\n\t\tdetail: error?.error?.message\n\t});\n\n\tif (message?.error) {\n\t\tmessageService.add({\n\t\t\tkey: 'toast-root',\n\t\t\tseverity: 'error',\n\t\t\tsummary: getTranslatedMessage(<string>message.error, translocoService)\n\t\t});\n\t}\n\n\tconsole.error(error);\n};\n\nconst getTranslatedMessage = (messageCode: string, translocoService: TranslocoService, response?: any): string => {\n\tconst translateObject = translocoService.getTranslation().get(translocoService.getActiveLang());\n\tlet translatedMessage = translateObject?.[messageCode] ?? messageCode;\n\n\tconst paramStartSymbol = '{{';\n\tconst paramEndSymbol = '}}';\n\n\tif (response && translatedMessage.includes(paramStartSymbol) && translatedMessage.includes(paramEndSymbol)) {\n\t\tdo {\n\t\t\tlet paramStartIndex = translatedMessage.indexOf(paramStartSymbol);\n\t\t\tlet paramEndIndex = translatedMessage.indexOf(paramEndSymbol);\n\t\t\tlet paramKey = translatedMessage.slice(paramStartIndex + paramStartSymbol.length, paramEndIndex);\n\n\t\t\t// Splitting the key to get nested object values\n\t\t\tlet paramKeyList = paramKey.split('.');\n\t\t\tlet paramValue;\n\n\t\t\tfor (let key of paramKeyList) {\n\t\t\t\tparamValue = paramValue ? paramValue[key] : response[key];\n\t\t\t}\n\n\t\t\tlet replacePattern = `${paramStartSymbol}${paramKey}${paramEndSymbol}`;\n\t\t\ttranslatedMessage = translatedMessage.replace(replacePattern, paramValue);\n\t\t} while (translatedMessage.includes(paramStartSymbol));\n\t}\n\n\treturn translatedMessage;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { runInInjectionContext } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\n\r\nimport { APP_CONFIGS } from 'aril/boot/config';\r\n\r\nimport { APIs, HTTPMethods, ProxyTypes } from '../lib/enums';\r\nimport { ErrorResponse, ServiceCallStateMap, ServiceResponse } from '../lib/interfaces';\r\nimport { getRequest } from './serviceRequest';\r\nimport { callState, errorState, successState } from './serviceStateMethods';\r\n\r\nexport function ServiceCall(\r\n\thttpMethod: HTTPMethods,\r\n\tproxy: ProxyTypes,\r\n\tserviceURL: string,\r\n\tmessage?: { success?: string; error?: string },\r\n\tremoteAPI?: APIs\r\n): MethodDecorator {\r\n\treturn function (serviceClass: object, serviceName: string | symbol, descriptor: PropertyDescriptor) {\r\n\t\tconst originalFunction = descriptor.value;\r\n\r\n\t\tdescriptor.value = function (...args: any[]) {\r\n\t\t\treturn runInInjectionContext((<any>this).injector, () => {\r\n\t\t\t\tconst httpClient: HttpClient = (<any>this).httpClient;\r\n\t\t\t\tconst api = remoteAPI ?? APP_CONFIGS.api;\r\n\t\t\t\tconst endPoint = api + '/' + serviceURL;\r\n\t\t\t\tconst request = getRequest(httpMethod, originalFunction, args);\r\n\t\t\t\tconst states: ServiceCallStateMap<any> = (<any>this).states;\r\n\r\n\t\t\t\t// TODO: keycloak check auth & refresh token\r\n\r\n\t\t\t\tcallState(states, serviceName);\r\n\r\n\t\t\t\tlet observable: Observable<any> = new Observable<any>();\r\n\r\n\t\t\t\tswitch (httpMethod) {\r\n\t\t\t\t\tcase HTTPMethods.GET:\r\n\t\t\t\t\t\tlet getReq = args.length ? '/' + args[0] : '';\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(endPoint + getReq, { responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.GETBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(endPoint, { params: request as HttpParams, responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.POST:\r\n\t\t\t\t\t\tobservable = httpClient.post<any>(endPoint, args[0], { responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.PUT:\r\n\t\t\t\t\t\tobservable = httpClient.put<any>(endPoint + '/' + args[0], request, { responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.DELETE:\r\n\t\t\t\t\t\tobservable = httpClient.delete<any>(endPoint + '/' + args[0], { responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.DELETEBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.delete<any>(endPoint, { params: request as HttpParams, responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tobservable = observable.pipe(\r\n\t\t\t\t\tmap((response) => new ServiceResponse(request, response, proxy)),\r\n\t\t\t\t\ttap((resp) =>\r\n\t\t\t\t\t\tsuccessState(\r\n\t\t\t\t\t\t\tstates,\r\n\t\t\t\t\t\t\tserviceName,\r\n\t\t\t\t\t\t\t(<any>this).translocoService,\r\n\t\t\t\t\t\t\t(<any>this).messageService,\r\n\t\t\t\t\t\t\tmessage,\r\n\t\t\t\t\t\t\tresp.response\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t),\r\n\t\t\t\t\tcatchError((error: HttpErrorResponse) => {\r\n\t\t\t\t\t\terrorState(states, serviceName, error, (<any>this).translocoService, (<any>this).messageService, message);\r\n\t\t\t\t\t\treturn of(new ErrorResponse(error));\r\n\t\t\t\t\t}),\r\n\t\t\t\t\ttakeUntilDestroyed()\r\n\t\t\t\t);\r\n\r\n\t\t\t\treturn observable;\r\n\t\t\t});\r\n\t\t};\r\n\t};\r\n}\r\n","import { APIs, HTTPMethods, ProxyTypes } from '../lib/enums';\r\nimport { ServiceCall } from './serviceBase';\r\n\r\nexport function ServiceCallMock(\r\n\thttpMethod: HTTPMethods,\r\n\tproxy: ProxyTypes,\r\n\tserviceURL: string,\r\n\tmockAPI: string,\r\n\tmessage?: { success?: string; error?: string; useDefault: boolean }\r\n) {\r\n\treturn ServiceCall(httpMethod, proxy, serviceURL, message, <APIs>mockAPI);\r\n}\r\n","/* lib */\nexport * from './lib/enums';\nexport * from './lib/interfaces';\n\n/* src */\nexport * from './src/httpClient';\nexport * from './src/serviceBase';\nexport * from './src/serviceMockBase';\nexport * from './src/serviceStateMethods';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;IAAY,YAOX;AAPD,CAAA,UAAY,WAAW,EAAA;AACtB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,WAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AAClC,CAAC,EAPW,WAAW,KAAX,WAAW,GAOtB,EAAA,CAAA,CAAA,CAAA;IAEW,KAcX;AAdD,CAAA,UAAY,IAAI,EAAA;AACf,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACZ,CAAC,EAdW,IAAI,KAAJ,IAAI,GAcf,EAAA,CAAA,CAAA,CAAA;IAEW,WAIX;AAJD,CAAA,UAAY,UAAU,EAAA;AACrB,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACX,CAAC,EAJW,UAAU,KAAV,UAAU,GAIrB,EAAA,CAAA,CAAA;;AC7BD;MAkBa,aAAa,CAAA;AAGzB,IAAA,WAAA,CAAY,GAAkC,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;KACjB;AACD,CAAA;AAEK,MAAO,eAAmB,SAAQ,aAAa,CAAA;AAKpD,IAAA,WAAA,CAAY,OAAY,EAAE,QAAW,EAAE,KAAiB,EAAA;QACvD,KAAK,CAAC,SAAS,CAAC,CAAC;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACnB;AACD;;ACrCD;MAWsB,UAAU,CAAA;AAAhC,IAAA,WAAA,GAAA;AACkB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;KAI7D;AAAA;;SCbe,UAAU,CACzB,UAAuB,EACvB,EAAa,EACb,IAAW,EAAA;AAEX,IAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AAChB,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACxC,QAAA,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;AAEjF,QAAA,IAAI,UAAU,KAAK,WAAW,CAAC,WAAW,IAAI,UAAU,KAAK,WAAW,CAAC,cAAc,EAAE;AACxF,YAAA,IAAI,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;YAEnC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,KAAI;AACvC,gBAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,WAAW,CAAC;SACnB;aAAM;YACN,MAAM,MAAM,GAA+B,EAAE,CAAC;YAE9C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBAC3B,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;AACjC,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,MAAM,CAAC;SACd;KACD;;AAAM,QAAA,OAAO,SAAS,CAAC;AACzB;;MCxBa,SAAS,GAAG,CAAC,MAAgC,EAAE,WAAgB,KAAU;IACrF,MAAM,CAAC,WAAW,CAAC,GAAG;AACrB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,kBAAkB,EAAE,KAAK;AACzB,QAAA,iBAAiB,EAAE,KAAK;KACxB,CAAC;AACH,EAAE;AAEW,MAAA,YAAY,GAAG,CAC3B,MAAgC,EAChC,WAAgB,EAChB,gBAAkC,EAClC,cAA8B,EAC9B,OAA8C,EAC9C,QAAc,KACL;IACT,MAAM,CAAC,WAAW,CAAC,GAAG;AACrB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,KAAK;AACzB,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,iBAAiB,EAAE,KAAK;KACxB,CAAC;AAEF,IAAA,IAAI,OAAO,EAAE,OAAO,EAAE;QACrB,cAAc,CAAC,GAAG,CAAC;AAClB,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,oBAAoB,CAAS,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC;AAClF,SAAA,CAAC,CAAC;KACH;AACF,EAAE;AAEW,MAAA,UAAU,GAAG,CACzB,MAAgC,EAChC,WAAgB,EAChB,KAAwB,EACxB,gBAAkC,EAClC,cAA8B,EAC9B,OAA8C,KACrC;IACT,MAAM,CAAC,WAAW,CAAC,GAAG;AACrB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,KAAK;AACzB,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,iBAAiB,EAAE,IAAI;KACvB,CAAC;AAEF,IAAA,IAAI,SAAiB,CAAC;AAEtB,IAAA,QAAQ,KAAK,CAAC,MAAM;AACnB,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,aAAa,CAAC;YAC1B,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,cAAc,CAAC;YAC3B,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,WAAW,CAAC;YACxB,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,WAAW,CAAC;YACxB,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,oBAAoB,CAAC;YACjC,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,gBAAgB,CAAC;YAC7B,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,iBAAiB,CAAC;YAC9B,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,UAAU,CAAC;YACvB,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,uBAAuB,CAAC;YACpC,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,iBAAiB,CAAC;YAC9B,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,aAAa,CAAC;YAC1B,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,qBAAqB,CAAC;YAClC,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,iBAAiB,CAAC;YAC9B,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,4BAA4B,CAAC;YACzC,MAAM;AACP,QAAA,KAAK,GAAG;YACP,SAAS,GAAG,iCAAiC,CAAC;YAC9C,MAAM;AACP,QAAA;AACC,YAAA,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;YAClC,MAAM;KACP;IAED,cAAc,CAAC,GAAG,CAAC;AAClB,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO;AAC7B,KAAA,CAAC,CAAC;AAEH,IAAA,IAAI,OAAO,EAAE,KAAK,EAAE;QACnB,cAAc,CAAC,GAAG,CAAC;AAClB,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,oBAAoB,CAAS,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC;AACtE,SAAA,CAAC,CAAC;KACH;AAED,IAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,EAAE;AAEF,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAE,gBAAkC,EAAE,QAAc,KAAY;AAChH,IAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;IAChG,IAAI,iBAAiB,GAAG,eAAe,GAAG,WAAW,CAAC,IAAI,WAAW,CAAC;IAEtE,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAC9B,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,IAAA,IAAI,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAC3G,QAAA,GAAG;YACF,IAAI,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAClE,IAAI,aAAa,GAAG,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC9D,YAAA,IAAI,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;;YAGjG,IAAI,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,YAAA,IAAI,UAAU,CAAC;AAEf,YAAA,KAAK,IAAI,GAAG,IAAI,YAAY,EAAE;AAC7B,gBAAA,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC1D;YAED,IAAI,cAAc,GAAG,CAAG,EAAA,gBAAgB,GAAG,QAAQ,CAAA,EAAG,cAAc,CAAA,CAAE,CAAC;YACvE,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAC3E,SAAC,QAAQ,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;KACvD;AAED,IAAA,OAAO,iBAAiB,CAAC;AAC1B,CAAC;;AC5IK,SAAU,WAAW,CAC1B,UAAuB,EACvB,KAAiB,EACjB,UAAkB,EAClB,OAA8C,EAC9C,SAAgB,EAAA;AAEhB,IAAA,OAAO,UAAU,YAAoB,EAAE,WAA4B,EAAE,UAA8B,EAAA;AAClG,QAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC;AAE1C,QAAA,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW,EAAA;AAC1C,YAAA,OAAO,qBAAqB,CAAO,IAAK,CAAC,QAAQ,EAAE,MAAK;AACvD,gBAAA,MAAM,UAAU,GAAqB,IAAK,CAAC,UAAU,CAAC;AACtD,gBAAA,MAAM,GAAG,GAAG,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC;AACzC,gBAAA,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC;gBACxC,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAC/D,gBAAA,MAAM,MAAM,GAAmC,IAAK,CAAC,MAAM,CAAC;;AAI5D,gBAAA,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAE/B,gBAAA,IAAI,UAAU,GAAoB,IAAI,UAAU,EAAO,CAAC;gBAExD,QAAQ,UAAU;oBACjB,KAAK,WAAW,CAAC,GAAG;AACnB,wBAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9C,wBAAA,UAAU,GAAG,UAAU,CAAC,GAAG,CAAM,QAAQ,GAAG,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;wBAC9E,MAAM;oBACP,KAAK,WAAW,CAAC,WAAW;AAC3B,wBAAA,UAAU,GAAG,UAAU,CAAC,GAAG,CAAM,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAqB,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;wBACpG,MAAM;oBACP,KAAK,WAAW,CAAC,IAAI;AACpB,wBAAA,UAAU,GAAG,UAAU,CAAC,IAAI,CAAM,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;wBAC/E,MAAM;oBACP,KAAK,WAAW,CAAC,GAAG;wBACnB,UAAU,GAAG,UAAU,CAAC,GAAG,CAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;wBAC9F,MAAM;oBACP,KAAK,WAAW,CAAC,MAAM;wBACtB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;wBACxF,MAAM;oBACP,KAAK,WAAW,CAAC,cAAc;AAC9B,wBAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAM,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAqB,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;wBACvG,MAAM;iBACP;gBAED,UAAU,GAAG,UAAU,CAAC,IAAI,CAC3B,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAChE,GAAG,CAAC,CAAC,IAAI,KACR,YAAY,CACX,MAAM,EACN,WAAW,EACL,IAAK,CAAC,gBAAgB,EACtB,IAAK,CAAC,cAAc,EAC1B,OAAO,EACP,IAAI,CAAC,QAAQ,CACb,CACD,EACD,UAAU,CAAC,CAAC,KAAwB,KAAI;AACvC,oBAAA,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAQ,IAAK,CAAC,gBAAgB,EAAQ,IAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;oBAC1G,OAAO,EAAE,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,iBAAC,CAAC,EACF,kBAAkB,EAAE,CACpB,CAAC;AAEF,gBAAA,OAAO,UAAU,CAAC;AACnB,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC;AACH,KAAC,CAAC;AACH;;ACjFM,SAAU,eAAe,CAC9B,UAAuB,EACvB,KAAiB,EACjB,UAAkB,EAClB,OAAe,EACf,OAAmE,EAAA;AAEnE,IAAA,OAAO,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAQ,OAAO,CAAC,CAAC;AAC3E;;ACXA;;ACAA;;AAEG;;;;"}
@@ -3,12 +3,12 @@ import * as i0 from '@angular/core';
3
3
  import { InjectionToken, inject, Injectable, isDevMode, NgModule } from '@angular/core';
4
4
  import { provideTransloco, provideTranslocoScope, TranslocoModule } from '@ngneat/transloco';
5
5
 
6
- const i18nRootFileUrl = new InjectionToken('BaseUrl');
6
+ const i18nFolderName = new InjectionToken('i18nFolderName');
7
7
 
8
8
  class TranslocoHttpLoader {
9
9
  constructor() {
10
10
  this.http = inject(HttpClient);
11
- this.folderUrl = inject(i18nRootFileUrl);
11
+ this.folderUrl = inject(i18nFolderName);
12
12
  }
13
13
  getTranslation(lang) {
14
14
  return this.http.get(`./assets/${this.folderUrl}/i18n/${lang}.json`);
@@ -68,5 +68,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
68
68
  * Generated bundle index. Do not edit.
69
69
  */
70
70
 
71
- export { TranslocoHttpLoader, i18nLoaderFactory, i18nModule, i18nProvider, i18nRootFileUrl, providei18nScope };
71
+ export { TranslocoHttpLoader, i18nFolderName, i18nModule, i18nProvider, providei18nScope };
72
72
  //# sourceMappingURL=aril-i18n.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aril-i18n.mjs","sources":["../../projects/aril/i18n/src/file-url-token.ts","../../projects/aril/i18n/src/loader.ts","../../projects/aril/i18n/src/provideI18n.ts","../../projects/aril/i18n/src/provideScope.ts","../../projects/aril/i18n/src/i18n.module.ts","../../projects/aril/i18n/aril-i18n.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const i18nRootFileUrl = new InjectionToken<string>('BaseUrl');\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Translation, TranslocoLoader } from '@ngneat/transloco';\n\nimport { i18nRootFileUrl } from './file-url-token';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslocoHttpLoader implements TranslocoLoader {\n\tprivate http = inject(HttpClient);\n\tprivate folderUrl = inject(i18nRootFileUrl);\n\n\tgetTranslation(lang: string) {\n\t\treturn this.http.get<Translation>(`./assets/${this.folderUrl}/i18n/${lang}.json`);\n\t}\n}\n","import { EnvironmentProviders, isDevMode } from '@angular/core';\n\nimport { provideTransloco } from '@ngneat/transloco';\n\nimport { TranslocoHttpLoader } from './loader';\n\nexport const i18nProvider = (): EnvironmentProviders[] => {\n\treturn provideTransloco({\n\t\tconfig: {\n\t\t\tavailableLangs: ['tr', 'en'],\n\t\t\tdefaultLang: 'tr',\n\t\t\tfallbackLang: 'tr',\n\t\t\treRenderOnLangChange: true,\n\t\t\tprodMode: !isDevMode()\n\t\t},\n\t\tloader: TranslocoHttpLoader\n\t});\n};\n","import { provideTranslocoScope } from '@ngneat/transloco';\n\nconst languages = ['tr', 'en'];\n\n/**\n * @param loader `(lang: string) => import(`./i18n/${lang}.json`)` to create a relative import to the correct dir\n */\nexport function i18nLoaderFactory(loader: (lang: string) => Promise<any>) {\n\treturn languages.reduce((acc: any, lang) => {\n\t\tacc[lang] = () => loader(lang);\n\t\treturn acc;\n\t}, {});\n}\n\nexport const providei18nScope = (scopeName: string, loader: (lang: string) => Promise<any>) => {\n\treturn provideTranslocoScope({\n\t\tscope: scopeName,\n\t\tloader: i18nLoaderFactory(loader)\n\t});\n};\n","import { NgModule } from '@angular/core';\n\nimport { TranslocoModule } from '@ngneat/transloco';\n\nimport { i18nProvider } from './provideI18n';\n\n@NgModule({\n\texports: [TranslocoModule],\n\tproviders: [i18nProvider()]\n})\nexport class i18nModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aril-i18n.mjs","sources":["../../projects/aril/i18n/src/folder-name-token.ts","../../projects/aril/i18n/src/loader.ts","../../projects/aril/i18n/src/provideI18n.ts","../../projects/aril/i18n/src/provideScope.ts","../../projects/aril/i18n/src/i18n.module.ts","../../projects/aril/i18n/aril-i18n.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const i18nFolderName = new InjectionToken<string>('i18nFolderName');\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { Translation, TranslocoLoader } from '@ngneat/transloco';\n\nimport { i18nFolderName } from './folder-name-token';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslocoHttpLoader implements TranslocoLoader {\n\tprivate http = inject(HttpClient);\n\tprivate folderUrl = inject(i18nFolderName);\n\n\tgetTranslation(lang: string) {\n\t\treturn this.http.get<Translation>(`./assets/${this.folderUrl}/i18n/${lang}.json`);\n\t}\n}\n","import { EnvironmentProviders, isDevMode } from '@angular/core';\n\nimport { provideTransloco } from '@ngneat/transloco';\n\nimport { TranslocoHttpLoader } from './loader';\n\nexport const i18nProvider = (): EnvironmentProviders[] => {\n\treturn provideTransloco({\n\t\tconfig: {\n\t\t\tavailableLangs: ['tr', 'en'],\n\t\t\tdefaultLang: 'tr',\n\t\t\tfallbackLang: 'tr',\n\t\t\treRenderOnLangChange: true,\n\t\t\tprodMode: !isDevMode()\n\t\t},\n\t\tloader: TranslocoHttpLoader\n\t});\n};\n","import { provideTranslocoScope } from '@ngneat/transloco';\n\nconst languages = ['tr', 'en'];\n\n/**\n * @param loader `(lang: string) => import(`./i18n/${lang}.json`)` to create a relative import to the correct dir\n */\nfunction i18nLoaderFactory(loader: (lang: string) => Promise<any>) {\n\treturn languages.reduce((acc: any, lang) => {\n\t\tacc[lang] = () => loader(lang);\n\t\treturn acc;\n\t}, {});\n}\n\nexport const providei18nScope = (scopeName: string, loader: (lang: string) => Promise<any>) => {\n\treturn provideTranslocoScope({\n\t\tscope: scopeName,\n\t\tloader: i18nLoaderFactory(loader)\n\t});\n};\n","import { NgModule } from '@angular/core';\n\nimport { TranslocoModule } from '@ngneat/transloco';\n\nimport { i18nProvider } from './provideI18n';\n\n@NgModule({\n\texports: [TranslocoModule],\n\tproviders: [i18nProvider()]\n})\nexport class i18nModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Injectable } from '@angular/core';
3
- import { KeycloakService } from 'keycloak-angular';
3
+ import * as i2 from 'keycloak-angular';
4
+ import { KeycloakService, KeycloakAuthGuard } from 'keycloak-angular';
5
+ import * as i1 from '@angular/router';
4
6
 
5
7
  class KeycloakManager {
6
8
  constructor() {
@@ -10,6 +12,25 @@ class KeycloakManager {
10
12
  initOptions: { onLoad: 'login-required' },
11
13
  bearerExcludedUrls: ['/assets']
12
14
  };
15
+ this.keycloak.keycloakEvents$.subscribe((event) => {
16
+ console.log('keycloakEvents', event);
17
+ // switch (event.type) {
18
+ // case KeycloakEventType.OnTokenExpired:
19
+ // this.keycloak.updateToken();
20
+ // break;
21
+ // case KeycloakEventType.OnAuthSuccess:
22
+ // this.keycloak.loadUserProfile();
23
+ // break;
24
+ // case KeycloakEventType.OnAuthError:
25
+ // case KeycloakEventType.OnAuthLogout:
26
+ // case KeycloakEventType.OnAuthRefreshError:
27
+ // this.keycloak.clearToken();
28
+ // break;
29
+ // case KeycloakEventType.OnAuthRefreshSuccess:
30
+ // this.keycloak.loadUserProfile();
31
+ // break;
32
+ // }
33
+ });
13
34
  }
14
35
  init(options) {
15
36
  return () => this.keycloak.init({ ...this.defaultOptions, ...options });
@@ -56,7 +77,7 @@ class KeycloakManager {
56
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: KeycloakManager, decorators: [{
57
78
  type: Injectable,
58
79
  args: [{ providedIn: 'root' }]
59
- }] });
80
+ }], ctorParameters: () => [] });
60
81
 
61
82
  const authInterceptor = (req, next) => {
62
83
  const keycloakManager = inject(KeycloakManager);
@@ -69,9 +90,43 @@ const authInterceptor = (req, next) => {
69
90
  return next(authReq);
70
91
  };
71
92
 
93
+ class AuthGuard extends KeycloakAuthGuard {
94
+ constructor(router, keycloak) {
95
+ super(router, keycloak);
96
+ this.router = router;
97
+ this.keycloak = keycloak;
98
+ }
99
+ async isAccessAllowed(route, state) {
100
+ if (!this.authenticated) {
101
+ await this.keycloak.login({
102
+ redirectUri: window.location.origin + state.url
103
+ });
104
+ }
105
+ const requiredRoles = route.data['roles'];
106
+ if (!Array.isArray(requiredRoles) || requiredRoles.length === 0) {
107
+ return true;
108
+ }
109
+ const authorized = requiredRoles.every((role) => this.roles.includes(role));
110
+ if (!authorized) {
111
+ console.error('User not authorized to access this route');
112
+ return false;
113
+ }
114
+ else
115
+ return true;
116
+ }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Router }, { token: i2.KeycloakService }], target: i0.ɵɵFactoryTarget.Injectable }); }
118
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
119
+ }
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, decorators: [{
121
+ type: Injectable,
122
+ args: [{
123
+ providedIn: 'root'
124
+ }]
125
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.KeycloakService }] });
126
+
72
127
  /**
73
128
  * Generated bundle index. Do not edit.
74
129
  */
75
130
 
76
- export { KeycloakManager, authInterceptor };
131
+ export { AuthGuard, KeycloakManager, authInterceptor };
77
132
  //# sourceMappingURL=aril-keycloak.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aril-keycloak.mjs","sources":["../../projects/aril/keycloak/src/keycloak.manager.ts","../../projects/aril/keycloak/src/auth.interceptor.ts","../../projects/aril/keycloak/aril-keycloak.ts"],"sourcesContent":["import { HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { KeycloakOptions, KeycloakService } from 'keycloak-angular';\nimport { KeycloakLoginOptions } from 'keycloak-js';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class KeycloakManager {\n\tpublic readonly keycloak = inject(KeycloakService);\n\n\tprivate defaultOptions: KeycloakOptions = {\n\t\tloadUserProfileAtStartUp: true,\n\t\tinitOptions: { onLoad: 'login-required' },\n\t\tbearerExcludedUrls: ['/assets']\n\t};\n\n\tinit(options: KeycloakOptions): () => Promise<any> {\n\t\treturn () => this.keycloak.init({ ...this.defaultOptions, ...options });\n\t}\n\n\tlogin(options?: KeycloakLoginOptions): Promise<void> {\n\t\treturn this.keycloak.login(options);\n\t}\n\n\tlogout(redirectUri?: string): Promise<void> {\n\t\treturn this.keycloak.logout(redirectUri); // window.location.origin\n\t}\n\n\tisUserInRole(role: string, resource?: string): boolean {\n\t\treturn this.keycloak.isUserInRole(role, resource);\n\t}\n\n\tgetUserRoles(realmRoles?: boolean, resource?: string): string[] {\n\t\treturn this.keycloak.getUserRoles(realmRoles, resource);\n\t}\n\n\tisLoggedIn(): boolean {\n\t\treturn this.keycloak.isLoggedIn();\n\t}\n\n\tisTokenExpired(minValidity?: number): boolean {\n\t\treturn this.keycloak.isTokenExpired(minValidity);\n\t}\n\n\tupdateToken(minValidity?: number): Promise<boolean> {\n\t\treturn this.keycloak.updateToken(minValidity);\n\t}\n\n\tloadUserProfile(forceReload?: boolean): Promise<any> {\n\t\treturn this.keycloak.loadUserProfile(forceReload);\n\t}\n\n\tgetToken(): Promise<string> {\n\t\treturn this.keycloak.getToken();\n\t}\n\n\tgetUsername(): string {\n\t\treturn this.keycloak.getUsername();\n\t}\n\n\tclearToken(): void {\n\t\tthis.keycloak.clearToken();\n\t}\n\n\taddTokenToHeader(headers?: HttpHeaders): Observable<HttpHeaders> {\n\t\treturn this.keycloak.addTokenToHeader(headers);\n\t}\n}\n","import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\n\nimport { KeycloakManager } from './keycloak.manager';\n\nexport const authInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\n\tconst keycloakManager = inject(KeycloakManager);\n\tconst token = keycloakManager.keycloak.getKeycloakInstance().token;\n\n\tconst authReq = req.clone({\n\t\tsetHeaders: {\n\t\t\tAuthorization: `Bearer ${token}`\n\t\t}\n\t});\n\n\treturn next(authReq);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aril-keycloak.mjs","sources":["../../projects/aril/keycloak/src/keycloak.manager.ts","../../projects/aril/keycloak/src/auth.interceptor.ts","../../projects/aril/keycloak/src/auth.guard.ts","../../projects/aril/keycloak/aril-keycloak.ts"],"sourcesContent":["import { HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { KeycloakOptions, KeycloakService } from 'keycloak-angular';\nimport { KeycloakLoginOptions } from 'keycloak-js';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class KeycloakManager {\n\tconstructor() {\n\t\tthis.keycloak.keycloakEvents$.subscribe((event) => {\n\t\t\tconsole.log('keycloakEvents', event);\n\t\t\t// switch (event.type) {\n\t\t\t// \tcase KeycloakEventType.OnTokenExpired:\n\t\t\t// \t\tthis.keycloak.updateToken();\n\t\t\t// \t\tbreak;\n\t\t\t// \tcase KeycloakEventType.OnAuthSuccess:\n\t\t\t// \t\tthis.keycloak.loadUserProfile();\n\t\t\t// \t\tbreak;\n\t\t\t// \tcase KeycloakEventType.OnAuthError:\n\t\t\t// \tcase KeycloakEventType.OnAuthLogout:\n\t\t\t// \tcase KeycloakEventType.OnAuthRefreshError:\n\t\t\t// \t\tthis.keycloak.clearToken();\n\t\t\t// \t\tbreak;\n\t\t\t// \tcase KeycloakEventType.OnAuthRefreshSuccess:\n\t\t\t// \t\tthis.keycloak.loadUserProfile();\n\t\t\t// \t\tbreak;\n\t\t\t// }\n\t\t});\n\t}\n\tpublic readonly keycloak = inject(KeycloakService);\n\n\tprivate defaultOptions: KeycloakOptions = {\n\t\tloadUserProfileAtStartUp: true,\n\t\tinitOptions: { onLoad: 'login-required' },\n\t\tbearerExcludedUrls: ['/assets']\n\t};\n\n\tinit(options: KeycloakOptions): () => Promise<any> {\n\t\treturn () => this.keycloak.init({ ...this.defaultOptions, ...options });\n\t}\n\n\tlogin(options?: KeycloakLoginOptions): Promise<void> {\n\t\treturn this.keycloak.login(options);\n\t}\n\n\tlogout(redirectUri?: string): Promise<void> {\n\t\treturn this.keycloak.logout(redirectUri); // window.location.origin\n\t}\n\n\tisUserInRole(role: string, resource?: string): boolean {\n\t\treturn this.keycloak.isUserInRole(role, resource);\n\t}\n\n\tgetUserRoles(realmRoles?: boolean, resource?: string): string[] {\n\t\treturn this.keycloak.getUserRoles(realmRoles, resource);\n\t}\n\n\tisLoggedIn(): boolean {\n\t\treturn this.keycloak.isLoggedIn();\n\t}\n\n\tisTokenExpired(minValidity?: number): boolean {\n\t\treturn this.keycloak.isTokenExpired(minValidity);\n\t}\n\n\tupdateToken(minValidity?: number): Promise<boolean> {\n\t\treturn this.keycloak.updateToken(minValidity);\n\t}\n\n\tloadUserProfile(forceReload?: boolean): Promise<any> {\n\t\treturn this.keycloak.loadUserProfile(forceReload);\n\t}\n\n\tgetToken(): Promise<string> {\n\t\treturn this.keycloak.getToken();\n\t}\n\n\tgetUsername(): string {\n\t\treturn this.keycloak.getUsername();\n\t}\n\n\tclearToken(): void {\n\t\tthis.keycloak.clearToken();\n\t}\n\n\taddTokenToHeader(headers?: HttpHeaders): Observable<HttpHeaders> {\n\t\treturn this.keycloak.addTokenToHeader(headers);\n\t}\n}\n","import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\n\nimport { KeycloakManager } from './keycloak.manager';\n\nexport const authInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\n\tconst keycloakManager = inject(KeycloakManager);\n\tconst token = keycloakManager.keycloak.getKeycloakInstance().token;\n\n\tconst authReq = req.clone({\n\t\tsetHeaders: {\n\t\t\tAuthorization: `Bearer ${token}`\n\t\t}\n\t});\n\n\treturn next(authReq);\n};\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';\n\nimport { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class AuthGuard extends KeycloakAuthGuard {\n\tconstructor(\n\t\tprotected override readonly router: Router,\n\t\tprotected readonly keycloak: KeycloakService\n\t) {\n\t\tsuper(router, keycloak);\n\t}\n\n\tpublic async isAccessAllowed(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n\t\tif (!this.authenticated) {\n\t\t\tawait this.keycloak.login({\n\t\t\t\tredirectUri: window.location.origin + state.url\n\t\t\t});\n\t\t}\n\n\t\tconst requiredRoles = route.data['roles'];\n\n\t\tif (!Array.isArray(requiredRoles) || requiredRoles.length === 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst authorized = requiredRoles.every((role) => this.roles.includes(role));\n\n\t\tif (!authorized) {\n\t\t\tconsole.error('User not authorized to access this route');\n\t\t\treturn false;\n\t\t} else return true;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}