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.
- package/README.md +2 -2
- package/boot/config/config.sample.json +19 -0
- package/boot/config/index.d.ts +2 -0
- package/boot/config/src/app.configs.d.ts +13 -0
- package/boot/{host/src/services/custom-manifest.d.ts → config/src/custom-remote.d.ts} +2 -2
- package/boot/host/index.d.ts +0 -1
- package/boot/host/src/bootstrap.d.ts +2 -2
- package/boot/host/src/services/microFrontEnd.service.d.ts +1 -1
- package/boot/mfe/index.d.ts +1 -1
- package/boot/mfe/src/app.component.d.ts +2 -0
- package/boot/mfe/src/appComponentLoader.d.ts +1 -0
- package/boot/mfe/src/bootstrap.d.ts +5 -2
- package/boot/mfe/src/loadStyles.d.ts +3 -0
- package/esm2022/boot/config/aril-boot-config.mjs +5 -0
- package/esm2022/boot/config/index.mjs +3 -0
- package/esm2022/boot/config/src/app.configs.mjs +19 -0
- package/esm2022/boot/config/src/custom-remote.mjs +2 -0
- package/esm2022/boot/host/index.mjs +1 -2
- package/esm2022/boot/host/src/bootstrap.mjs +14 -12
- package/esm2022/boot/host/src/services/microFrontEnd.service.mjs +1 -1
- package/esm2022/boot/mfe/index.mjs +2 -2
- package/esm2022/boot/mfe/src/app.component.mjs +10 -3
- package/esm2022/boot/mfe/src/appComponentLoader.mjs +5 -0
- package/esm2022/boot/mfe/src/bootstrap.mjs +24 -33
- package/esm2022/boot/mfe/src/loadStyles.mjs +16 -0
- package/esm2022/http/index.mjs +2 -1
- package/esm2022/http/lib/enums.mjs +3 -1
- package/esm2022/http/src/httpClient.mjs +6 -4
- package/esm2022/http/src/serviceBase.mjs +12 -43
- package/esm2022/http/src/serviceMockBase.mjs +5 -0
- package/esm2022/http/src/serviceRequest.mjs +26 -0
- package/esm2022/http/src/serviceStateMethods.mjs +97 -3
- package/esm2022/i18n/index.mjs +2 -2
- package/esm2022/i18n/src/folder-name-token.mjs +3 -0
- package/esm2022/i18n/src/loader.mjs +3 -3
- package/esm2022/i18n/src/provideScope.mjs +2 -2
- package/esm2022/keycloak/index.mjs +2 -1
- package/esm2022/keycloak/src/auth.guard.mjs +39 -0
- package/esm2022/keycloak/src/keycloak.manager.mjs +21 -2
- package/esm2022/public-api.mjs +1 -2
- package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +8 -5
- package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +3 -3
- package/esm2022/theme/layout/service/app.layout.service.mjs +1 -1
- package/esm2022/theme/layout/service/app.menu.service.mjs +3 -1
- package/esm2022/ui/button/src/button.component.mjs +1 -1
- package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +1 -1
- package/esm2022/util/block/aril-util-block.mjs +5 -0
- package/esm2022/util/block/index.mjs +2 -0
- package/esm2022/util/block/src/block.mjs +64 -0
- package/esm2022/util/custom_pages/src/notFound.component.mjs +53 -110
- package/esm2022/util/pub-sub/src/pub-sub.service.mjs +2 -3
- package/fesm2022/{aril-boot-mfe-app.component-zro0FnKY.mjs → aril-app.component-pGPjpk8x.mjs} +14 -7
- package/fesm2022/aril-app.component-pGPjpk8x.mjs.map +1 -0
- package/fesm2022/aril-boot-config.mjs +26 -0
- package/fesm2022/aril-boot-config.mjs.map +1 -0
- package/fesm2022/aril-boot-host.mjs +14 -13
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-app.component-sZDpvJDM.mjs → aril-boot-mfe-app.component-h5TW-GVW.mjs} +13 -6
- package/fesm2022/aril-boot-mfe-app.component-h5TW-GVW.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-7ZwVVddO.mjs +92 -0
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-7ZwVVddO.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe.mjs +13 -81
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/aril-http.mjs +140 -45
- package/fesm2022/aril-http.mjs.map +1 -1
- package/fesm2022/aril-i18n.mjs +3 -3
- package/fesm2022/aril-i18n.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs +58 -3
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +11 -7
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-button.mjs.map +1 -1
- package/fesm2022/aril-ui-lib.mjs.map +1 -1
- package/fesm2022/aril-util-block.mjs +71 -0
- package/fesm2022/aril-util-block.mjs.map +1 -0
- package/fesm2022/aril-util-custom_pages.mjs +52 -109
- package/fesm2022/aril-util-custom_pages.mjs.map +1 -1
- package/fesm2022/aril-util-pub-sub.mjs +1 -2
- package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
- package/fesm2022/aril.mjs +215 -16
- package/fesm2022/aril.mjs.map +1 -1
- package/http/index.d.ts +1 -0
- package/http/lib/enums.d.ts +4 -2
- package/http/src/httpClient.d.ts +2 -4
- package/http/src/serviceBase.d.ts +4 -2
- package/http/src/serviceMockBase.d.ts +6 -0
- package/http/src/serviceRequest.d.ts +4 -0
- package/http/src/serviceStateMethods.d.ts +11 -2
- package/i18n/index.d.ts +1 -1
- package/i18n/src/folder-name-token.d.ts +2 -0
- package/i18n/src/provideScope.d.ts +0 -4
- package/keycloak/index.d.ts +1 -0
- package/keycloak/src/auth.guard.d.ts +11 -0
- package/keycloak/src/keycloak.manager.d.ts +1 -0
- package/package.json +13 -1
- package/public-api.d.ts +0 -1
- package/scripts/util/blockui.min.js +7 -0
- package/styles/util/blockui.css +56 -0
- package/theme/layout/app/profileSidebar/app.profilesidebar.component.d.ts +3 -0
- package/theme/layout/app/profileSidebar/app.profilesidebar.component.html +151 -152
- package/theme/layout/app/profileSidebar/app.profilesidebar.component.ts +31 -24
- package/theme/layout/app/topbar/app.topbar.component.html +45 -45
- package/theme/layout/app/topbar/app.topbar.component.ts +32 -32
- package/theme/layout/service/app.layout.service.ts +178 -178
- package/theme/layout/service/app.menu.service.ts +2 -0
- package/ui/button/src/button.component.d.ts +1 -1
- package/ui/lib/src/input/common-input-validators.service.d.ts +2 -1
- package/util/block/index.d.ts +1 -0
- package/util/block/src/block.d.ts +28 -0
- package/util/pub-sub/src/pub-sub.service.d.ts +1 -2
- package/esm2022/boot/host/src/services/custom-manifest.mjs +0 -2
- package/esm2022/i18n/src/file-url-token.mjs +0 -3
- package/fesm2022/aril-app.component-sZDpvJDM.mjs.map +0 -1
- package/fesm2022/aril-aril-D__IXMsf.mjs +0 -207
- package/fesm2022/aril-aril-D__IXMsf.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-app.component-zro0FnKY.mjs.map +0 -1
- package/i18n/src/file-url-token.d.ts +0 -2
|
@@ -1,82 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
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":[
|
|
1
|
+
{"version":3,"file":"aril-boot-mfe.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
package/fesm2022/aril-http.mjs
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { HttpClient, HttpParams } from '@angular/common/http';
|
|
2
|
-
import {
|
|
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
|
-
|
|
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 ??
|
|
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
|
-
|
|
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
|
-
|
|
137
|
-
|
|
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 {
|
|
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":";;;;;;;IAAY,YAMX;AAND,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;AAClB,CAAC,EANW,WAAW,KAAX,WAAW,GAMtB,EAAA,CAAA,CAAA,CAAA;IAEW,KAaX;AAbD,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;AACZ,CAAC,EAbW,IAAI,KAAJ,IAAI,GAaf,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;;AC3BD;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;MAOa,SAAS,GAAG,IAAI,cAAc,CAAO,KAAK,EAAE;MAEnC,UAAU,CAAA;AAAhC,IAAA,WAAA,GAAA;AACkB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;KAG7C;AAAA;;MCZY,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;MACW,YAAY,GAAG,CAAC,MAAgC,EAAE,WAAgB,KAAU;IACxF,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;AACH,EAAE;MACW,UAAU,GAAG,CAAC,MAAgC,EAAE,WAAgB,KAAU;IACtF,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;AACH;;AC1BA;AAgBM,SAAU,WAAW,CAC1B,UAAuB,EACvB,KAAiB,EACjB,UAAkB,EAClB,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,GAAS,SAAS,IAAU,IAAK,CAAC,OAAO,CAAC;AACnD,gBAAA,MAAM,QAAQ,GAAW,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC;gBAChD,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAC/D,gBAAA,MAAM,MAAM,GAAmC,IAAK,CAAC,MAAM,CAAC;AAC5D,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE9C,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;iBACP;AAED,gBAAA,UAAU,GAAG,UAAU,CAAC,IAAI,CAC3B,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAChE,GAAG,CAAC,MAAM,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAC5C,UAAU,CAAC,CAAC,KAAwB,KAAI;AACvC,oBAAA,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAChC,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrB,cAAc,CAAC,GAAG,CAAC;AAClB,wBAAA,GAAG,EAAE,YAAY;AACjB,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO;AAC7B,qBAAA,CAAC,CAAC;oBACH,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,CAAC;AAEK,SAAU,eAAe,CAAC,UAAuB,EAAE,KAAiB,EAAE,UAAkB,EAAE,OAAe,EAAA;IAC9G,OAAO,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAQ,OAAO,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,UAAU,CAClB,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,EAAE;AAC3C,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;;AC/GA;;ACAA;;AAEG;;;;"}
|
|
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":"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"}
|
package/fesm2022/aril-i18n.mjs
CHANGED
|
@@ -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
|
|
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(
|
|
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,
|
|
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/
|
|
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
|
|
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":"
|
|
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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"}
|