@techextensor/tab-core-utility 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +14 -0
- package/esm2022/lib/tab-core-utility/auth/services/auth.service.mjs +23 -0
- package/esm2022/lib/tab-core-utility/auth/services/local-storage-jwt.service.mjs +30 -0
- package/esm2022/lib/tab-core-utility/auth/services/token-interceptor.service.mjs +28 -0
- package/esm2022/lib/tab-core-utility/core/api-types/auth.mjs +2 -0
- package/esm2022/lib/tab-core-utility/core/api-types/user.mjs +2 -0
- package/esm2022/lib/tab-core-utility/core/error-handler/error-handler-interceptor.service.mjs +25 -0
- package/esm2022/lib/tab-core-utility/core/error-handler/error-handler.store.mjs +21 -0
- package/esm2022/lib/tab-core-utility/core/error-handler/models/error-handler.state.mjs +5 -0
- package/esm2022/lib/tab-core-utility/core/http-client/api-url.token.mjs +3 -0
- package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +43 -0
- package/esm2022/lib/tab-core-utility/core/util/auth.utils.mjs +21 -0
- package/esm2022/techextensor-tab-core-utility.mjs +5 -0
- package/index.d.ts +11 -0
- package/lib/tab-core-utility/auth/services/auth.service.d.ts +11 -0
- package/lib/tab-core-utility/auth/services/local-storage-jwt.service.d.ts +9 -0
- package/lib/tab-core-utility/auth/services/token-interceptor.service.d.ts +3 -0
- package/lib/tab-core-utility/core/api-types/auth.d.ts +15 -0
- package/lib/tab-core-utility/core/api-types/user.d.ts +10 -0
- package/lib/tab-core-utility/core/error-handler/error-handler-interceptor.service.d.ts +3 -0
- package/lib/tab-core-utility/core/error-handler/error-handler.store.d.ts +10 -0
- package/lib/tab-core-utility/core/error-handler/models/error-handler.state.d.ts +5 -0
- package/lib/tab-core-utility/core/http-client/api-url.token.d.ts +2 -0
- package/lib/tab-core-utility/core/http-client/api.service.d.ts +14 -0
- package/lib/tab-core-utility/core/util/auth.utils.d.ts +9 -0
- package/package.json +28 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Auth
|
|
2
|
+
export * from './lib/tab-core-utility/auth/services/auth.service';
|
|
3
|
+
export * from './lib/tab-core-utility/auth/services/local-storage-jwt.service';
|
|
4
|
+
export * from './lib/tab-core-utility/auth/services/token-interceptor.service';
|
|
5
|
+
// Core
|
|
6
|
+
export * from './lib/tab-core-utility/core/api-types/auth';
|
|
7
|
+
export * from './lib/tab-core-utility/core/api-types/user';
|
|
8
|
+
export * from './lib/tab-core-utility/core/error-handler/error-handler-interceptor.service';
|
|
9
|
+
export * from './lib/tab-core-utility/core/error-handler/error-handler.store';
|
|
10
|
+
export * from './lib/tab-core-utility/core/error-handler/models/error-handler.state';
|
|
11
|
+
export * from './lib/tab-core-utility/core/http-client/api-url.token';
|
|
12
|
+
export * from './lib/tab-core-utility/core/http-client/api.service';
|
|
13
|
+
export * from './lib/tab-core-utility/core/util/auth.utils';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPO0FBQ1AsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsZ0VBQWdFLENBQUM7QUFFL0UsT0FBTztBQUNQLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUUzRCxjQUFjLDZFQUE2RSxDQUFDO0FBQzVGLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYyxzRUFBc0UsQ0FBQztBQUVyRixjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMscURBQXFELENBQUM7QUFFcEUsY0FBYyw2Q0FBNkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEF1dGhcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXV0aC9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hdXRoL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Utand0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hdXRoL3NlcnZpY2VzL3Rva2VuLWludGVyY2VwdG9yLnNlcnZpY2UnO1xuXG4vLyBDb3JlXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvYXBpLXR5cGVzL2F1dGgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2FwaS10eXBlcy91c2VyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2Vycm9yLWhhbmRsZXIvZXJyb3ItaGFuZGxlci1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvY29yZS9lcnJvci1oYW5kbGVyL2Vycm9yLWhhbmRsZXIuc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2Vycm9yLWhhbmRsZXIvbW9kZWxzL2Vycm9yLWhhbmRsZXIuc3RhdGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvaHR0cC1jbGllbnQvYXBpLXVybC50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvdXRpbC9hdXRoLnV0aWxzJztcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { ApiService } from '../../core/http-client/api.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AuthService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.apiService = inject(ApiService);
|
|
7
|
+
}
|
|
8
|
+
user(url) {
|
|
9
|
+
return this.apiService.get(url);
|
|
10
|
+
}
|
|
11
|
+
signIn(url, credentials) {
|
|
12
|
+
return this.apiService.post(url, {
|
|
13
|
+
user: credentials,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
static { this.ɵfac = function AuthService_Factory(t) { return new (t || AuthService)(); }; }
|
|
17
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthService, factory: AuthService.ɵfac, providedIn: 'root' }); }
|
|
18
|
+
}
|
|
19
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthService, [{
|
|
20
|
+
type: Injectable,
|
|
21
|
+
args: [{ providedIn: 'root' }]
|
|
22
|
+
}], null, null); })();
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXV0aC9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUdoRSxNQUFNLE9BQU8sV0FBVztJQUR4QjtRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBV2xEO0lBVEMsSUFBSSxDQUFDLEdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsR0FBVyxFQUFFLFdBQXNCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQWlDLEdBQUcsRUFBRTtZQUMvRCxJQUFJLEVBQUUsV0FBVztTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDOzRFQVhVLFdBQVc7dUVBQVgsV0FBVyxXQUFYLFdBQVcsbUJBREUsTUFBTTs7aUZBQ25CLFdBQVc7Y0FEdkIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9naW5Vc2VyLCBMb2dpblVzZXJSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vY29yZS9hcGktdHlwZXMvYXV0aCc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jb3JlL2FwaS10eXBlcy91c2VyJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcblxuICB1c2VyKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldDxVc2VyUmVzcG9uc2U+KHVybCk7XG4gIH1cblxuICBzaWduSW4odXJsOiBzdHJpbmcsIGNyZWRlbnRpYWxzOiBMb2dpblVzZXIpOiBPYnNlcnZhYmxlPFVzZXJSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdDxVc2VyUmVzcG9uc2UsIExvZ2luVXNlclJlcXVlc3Q+KHVybCwge1xuICAgICAgdXNlcjogY3JlZGVudGlhbHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class LocalStorageJwtService {
|
|
5
|
+
getItem() {
|
|
6
|
+
const data = localStorage.getItem('jwtToken');
|
|
7
|
+
const appCode = localStorage.getItem('appCode');
|
|
8
|
+
if (data && appCode) {
|
|
9
|
+
return of(data, appCode);
|
|
10
|
+
}
|
|
11
|
+
return of(null);
|
|
12
|
+
}
|
|
13
|
+
setItem(data, appcode) {
|
|
14
|
+
localStorage.setItem('jwtToken', data);
|
|
15
|
+
localStorage.setItem('appCode', appcode);
|
|
16
|
+
return of(data, appcode);
|
|
17
|
+
}
|
|
18
|
+
removeItem() {
|
|
19
|
+
localStorage.removeItem('jwtToken');
|
|
20
|
+
localStorage.removeItem('appCode');
|
|
21
|
+
return of(true);
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = function LocalStorageJwtService_Factory(t) { return new (t || LocalStorageJwtService)(); }; }
|
|
24
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LocalStorageJwtService, factory: LocalStorageJwtService.ɵfac, providedIn: 'root' }); }
|
|
25
|
+
}
|
|
26
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LocalStorageJwtService, [{
|
|
27
|
+
type: Injectable,
|
|
28
|
+
args: [{ providedIn: 'root' }]
|
|
29
|
+
}], null, null); })();
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1qd3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2F1dGgvc2VydmljZXMvbG9jYWwtc3RvcmFnZS1qd3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsT0FBTztRQUNMLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNwQixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLE9BQWU7UUFDbkMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVO1FBQ1IsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxZQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7dUZBcEJVLHNCQUFzQjt1RUFBdEIsc0JBQXNCLFdBQXRCLHNCQUFzQixtQkFEVCxNQUFNOztpRkFDbkIsc0JBQXNCO2NBRGxDLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZUp3dFNlcnZpY2Uge1xuICBnZXRJdGVtKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnand0VG9rZW4nKTtcbiAgICBjb25zdCBhcHBDb2RlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FwcENvZGUnKTtcbiAgICBpZiAoZGF0YSAmJiBhcHBDb2RlKSB7XG4gICAgICByZXR1cm4gb2YoZGF0YSwgYXBwQ29kZSk7XG4gICAgfVxuICAgIHJldHVybiBvZihudWxsKTtcbiAgfVxuXG4gIHNldEl0ZW0oZGF0YTogc3RyaW5nLCBhcHBjb2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdqd3RUb2tlbicsIGRhdGEpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBDb2RlJywgYXBwY29kZSk7XG4gICAgcmV0dXJuIG9mKGRhdGEsIGFwcGNvZGUpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnand0VG9rZW4nKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYXBwQ29kZScpO1xuICAgIHJldHVybiBvZih0cnVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { LocalStorageJwtService } from './local-storage-jwt.service';
|
|
3
|
+
export const TokenInterceptorService = (
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
|
+
request, next) => {
|
|
6
|
+
let token = null;
|
|
7
|
+
let appCode = null;
|
|
8
|
+
inject(LocalStorageJwtService)
|
|
9
|
+
.getItem()
|
|
10
|
+
.subscribe((t) => {
|
|
11
|
+
token = t;
|
|
12
|
+
});
|
|
13
|
+
inject(LocalStorageJwtService)
|
|
14
|
+
.getItem()
|
|
15
|
+
.subscribe((t) => {
|
|
16
|
+
appCode = t;
|
|
17
|
+
});
|
|
18
|
+
if (token && appCode) {
|
|
19
|
+
request = request.clone({
|
|
20
|
+
setHeaders: {
|
|
21
|
+
Authorization: `Token ${token}`,
|
|
22
|
+
ApplicationCode: appCode,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return next(request);
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4taW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2F1dGgvc2VydmljZXMvdG9rZW4taW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0FBQ3JDLDhEQUE4RDtBQUM5RCxPQUF5QixFQUN6QixJQUFtQixFQUNTLEVBQUU7SUFDOUIsSUFBSSxLQUFLLEdBQWtCLElBQUksQ0FBQztJQUNoQyxJQUFJLE9BQU8sR0FBa0IsSUFBSSxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztTQUMzQixPQUFPLEVBQUU7U0FDVCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNmLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDLENBQUMsQ0FBQztJQUVMLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztTQUMzQixPQUFPLEVBQUU7U0FDVCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNmLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztJQUVMLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixhQUFhLEVBQUUsU0FBUyxLQUFLLEVBQUU7Z0JBQy9CLGVBQWUsRUFBRSxPQUFPO2FBQ3pCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEhhbmRsZXJGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZUp3dFNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Utand0LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgVG9rZW5JbnRlcmNlcHRvclNlcnZpY2UgPSAoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXG4gIG5leHQ6IEh0dHBIYW5kbGVyRm5cbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0+IHtcbiAgbGV0IHRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgbGV0IGFwcENvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGluamVjdChMb2NhbFN0b3JhZ2VKd3RTZXJ2aWNlKVxuICAgIC5nZXRJdGVtKClcbiAgICAuc3Vic2NyaWJlKCh0KSA9PiB7XG4gICAgICB0b2tlbiA9IHQ7XG4gICAgfSk7XG5cbiAgaW5qZWN0KExvY2FsU3RvcmFnZUp3dFNlcnZpY2UpXG4gICAgLmdldEl0ZW0oKVxuICAgIC5zdWJzY3JpYmUoKHQpID0+IHtcbiAgICAgIGFwcENvZGUgPSB0O1xuICAgIH0pO1xuXG4gIGlmICh0b2tlbiAmJiBhcHBDb2RlKSB7XG4gICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgc2V0SGVhZGVyczoge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBgVG9rZW4gJHt0b2tlbn1gLFxuICAgICAgICBBcHBsaWNhdGlvbkNvZGU6IGFwcENvZGUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXh0KHJlcXVlc3QpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvYXBpLXR5cGVzL2F1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTmV3VXNlclJlcXVlc3Qge1xuICB1c2VyOiBOZXdVc2VyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ld1VzZXIge1xuICB1c2VybmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luVXNlclJlcXVlc3Qge1xuICB1c2VyOiBMb2dpblVzZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5Vc2VyIHtcbiAgZW1haWw6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvYXBpLXR5cGVzL3VzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHRva2VuOiBzdHJpbmc7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIGJpbzogc3RyaW5nO1xuICBpbWFnZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJSZXNwb25zZSB7XG4gIHVzZXI6IFVzZXI7XG59XG4iXX0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
+
import { inject } from '@angular/core';
|
|
3
|
+
import { throwError } from 'rxjs';
|
|
4
|
+
import { catchError } from 'rxjs/operators';
|
|
5
|
+
import { ErrorHandlerStore } from './error-handler.store';
|
|
6
|
+
export const errorHandlingInterceptor = (request, next) => {
|
|
7
|
+
const errorHandlerStore = inject(ErrorHandlerStore);
|
|
8
|
+
return next(request).pipe(catchError((error) => {
|
|
9
|
+
if (error instanceof HttpErrorResponse) {
|
|
10
|
+
switch (error.status) {
|
|
11
|
+
case 401:
|
|
12
|
+
errorHandlerStore.handleError401(error);
|
|
13
|
+
break;
|
|
14
|
+
case 404:
|
|
15
|
+
errorHandlerStore.handleError404(error);
|
|
16
|
+
break;
|
|
17
|
+
default:
|
|
18
|
+
throwError(error);
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return throwError(error);
|
|
23
|
+
}));
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvY29yZS9lcnJvci1oYW5kbGVyL2Vycm9yLWhhbmRsZXItaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQXlDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUN0QyxPQUF5QixFQUN6QixJQUFtQixFQUNTLEVBQUU7SUFDOUIsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUVwRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ25CLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDdkMsUUFBUSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssR0FBRztvQkFDTixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3hDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDeEMsTUFBTTtnQkFDUjtvQkFDRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xCLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwSGFuZGxlckZuLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclN0b3JlIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyLnN0b3JlJztcblxuZXhwb3J0IGNvbnN0IGVycm9ySGFuZGxpbmdJbnRlcmNlcHRvciA9IChcbiAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcbiAgbmV4dDogSHR0cEhhbmRsZXJGbixcbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0+IHtcbiAgY29uc3QgZXJyb3JIYW5kbGVyU3RvcmUgPSBpbmplY3QoRXJyb3JIYW5kbGVyU3RvcmUpO1xuXG4gIHJldHVybiBuZXh0KHJlcXVlc3QpLnBpcGUoXG4gICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHN3aXRjaCAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICAgICAgY2FzZSA0MDE6XG4gICAgICAgICAgICBlcnJvckhhbmRsZXJTdG9yZS5oYW5kbGVFcnJvcjQwMShlcnJvcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDQwNDpcbiAgICAgICAgICAgIGVycm9ySGFuZGxlclN0b3JlLmhhbmRsZUVycm9yNDA0KGVycm9yKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgfSksXG4gICk7XG59O1xuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { signalStore, withState, withMethods, patchState } from '@ngrx/signals';
|
|
2
|
+
import { inject } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { errorHandlerInitialState } from './models/error-handler.state';
|
|
5
|
+
export const ErrorHandlerStore = signalStore({ providedIn: 'root' }, withState(errorHandlerInitialState), withMethods((store, router = inject(Router)) => ({
|
|
6
|
+
handleError401: (error) => {
|
|
7
|
+
patchState(store, {
|
|
8
|
+
code: error.status,
|
|
9
|
+
message: error.message,
|
|
10
|
+
});
|
|
11
|
+
router.navigate(['/login']);
|
|
12
|
+
},
|
|
13
|
+
handleError404: (error) => {
|
|
14
|
+
patchState(store, {
|
|
15
|
+
code: error.status,
|
|
16
|
+
message: error.message,
|
|
17
|
+
});
|
|
18
|
+
router.navigate(['/']);
|
|
19
|
+
},
|
|
20
|
+
})));
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvZXJyb3ItaGFuZGxlci9lcnJvci1oYW5kbGVyLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFxQix3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzNGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FDMUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQ3RCLFNBQVMsQ0FBb0Isd0JBQXdCLENBQUMsRUFDdEQsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsY0FBYyxFQUFFLENBQUMsS0FBd0IsRUFBRSxFQUFFO1FBQzNDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDaEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ2xCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztTQUN2QixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsY0FBYyxFQUFFLENBQUMsS0FBd0IsRUFBRSxFQUFFO1FBQzNDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDaEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ2xCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztTQUN2QixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0YsQ0FBQyxDQUFDLENBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbFN0b3JlLCB3aXRoU3RhdGUsIHdpdGhNZXRob2RzLCBwYXRjaFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTdGF0ZSwgZXJyb3JIYW5kbGVySW5pdGlhbFN0YXRlIH0gZnJvbSAnLi9tb2RlbHMvZXJyb3ItaGFuZGxlci5zdGF0ZSc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuZXhwb3J0IGNvbnN0IEVycm9ySGFuZGxlclN0b3JlID0gc2lnbmFsU3RvcmUoXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4gIHdpdGhTdGF0ZTxFcnJvckhhbmRsZXJTdGF0ZT4oZXJyb3JIYW5kbGVySW5pdGlhbFN0YXRlKSxcbiAgd2l0aE1ldGhvZHMoKHN0b3JlLCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKSkgPT4gKHtcbiAgICBoYW5kbGVFcnJvcjQwMTogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICBjb2RlOiBlcnJvci5zdGF0dXMsXG4gICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICB9KTtcbiAgICAgIHJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddKTtcbiAgICB9LFxuICAgIGhhbmRsZUVycm9yNDA0OiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgIGNvZGU6IGVycm9yLnN0YXR1cyxcbiAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgIH0pO1xuICAgICAgcm91dGVyLm5hdmlnYXRlKFsnLyddKTtcbiAgICB9LFxuICB9KSksXG4pO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const errorHandlerInitialState = {
|
|
2
|
+
message: undefined,
|
|
3
|
+
code: -1,
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvZXJyb3ItaGFuZGxlci9tb2RlbHMvZXJyb3ItaGFuZGxlci5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBc0I7SUFDekQsT0FBTyxFQUFFLFNBQVM7SUFDbEIsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEVycm9ySGFuZGxlclN0YXRlIHtcbiAgY29kZTogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBlcnJvckhhbmRsZXJJbml0aWFsU3RhdGU6IEVycm9ySGFuZGxlclN0YXRlID0ge1xuICBtZXNzYWdlOiB1bmRlZmluZWQsXG4gIGNvZGU6IC0xLFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const API_URL = new InjectionToken('API_URL');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXVybC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvaHR0cC1jbGllbnQvYXBpLXVybC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBUyxTQUFTLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBBUElfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0FQSV9VUkwnKTtcbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
|
|
3
|
+
import { API_URL } from './api-url.token';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ApiService {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.http = inject(HttpClient);
|
|
8
|
+
this.api_url = inject(API_URL);
|
|
9
|
+
}
|
|
10
|
+
get(url, params = new HttpParams()) {
|
|
11
|
+
return this.http.get(`${this.api_url}${url}`, {
|
|
12
|
+
headers: this.headers,
|
|
13
|
+
params,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
post(url, data) {
|
|
17
|
+
return this.http.post(`${this.api_url}${url}`, JSON.stringify(data), { headers: this.headers });
|
|
18
|
+
}
|
|
19
|
+
put(url, data) {
|
|
20
|
+
return this.http.put(`${this.api_url}${url}`, JSON.stringify(data), {
|
|
21
|
+
headers: this.headers,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
delete(url) {
|
|
25
|
+
return this.http.delete(`${this.api_url}${url}`, {
|
|
26
|
+
headers: this.headers,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
get headers() {
|
|
30
|
+
const headersConfig = {
|
|
31
|
+
'Content-Type': 'application/json',
|
|
32
|
+
Accept: 'application/json',
|
|
33
|
+
};
|
|
34
|
+
return new HttpHeaders(headersConfig);
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = function ApiService_Factory(t) { return new (t || ApiService)(); }; }
|
|
37
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ApiService, factory: ApiService.ɵfac, providedIn: 'root' }); }
|
|
38
|
+
}
|
|
39
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ApiService, [{
|
|
40
|
+
type: Injectable,
|
|
41
|
+
args: [{ providedIn: 'root' }]
|
|
42
|
+
}], null, null); })();
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFHMUMsTUFBTSxPQUFPLFVBQVU7SUFEdkI7UUFFbUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQixZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBaUM1QztJQS9CQyxHQUFHLENBQUksR0FBVyxFQUFFLFNBQXFCLElBQUksVUFBVSxFQUFFO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxFQUFFO1lBQy9DLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixNQUFNO1NBQ1AsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBTyxHQUFXLEVBQUUsSUFBUTtRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxHQUFHLENBQU8sR0FBVyxFQUFFLElBQU87UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBSSxHQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxFQUFFO1lBQ2xELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsTUFBTSxhQUFhLEdBQUc7WUFDcEIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxNQUFNLEVBQUUsa0JBQWtCO1NBQzNCLENBQUM7UUFFRixPQUFPLElBQUksV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7MkVBbENVLFVBQVU7dUVBQVYsVUFBVSxXQUFWLFVBQVUsbUJBREcsTUFBTTs7aUZBQ25CLFVBQVU7Y0FEdEIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBUElfVVJMIH0gZnJvbSAnLi9hcGktdXJsLnRva2VuJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFwaV91cmwgPSBpbmplY3QoQVBJX1VSTCk7XG5cbiAgZ2V0PFQ+KHVybDogc3RyaW5nLCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4oYCR7dGhpcy5hcGlfdXJsfSR7dXJsfWAsIHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVycyxcbiAgICAgIHBhcmFtcyxcbiAgICB9KTtcbiAgfVxuXG4gIHBvc3Q8VCwgRD4odXJsOiBzdHJpbmcsIGRhdGE/OiBEKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KGAke3RoaXMuYXBpX3VybH0ke3VybH1gLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgeyBoZWFkZXJzOiB0aGlzLmhlYWRlcnMgfSk7XG4gIH1cblxuICBwdXQ8VCwgRD4odXJsOiBzdHJpbmcsIGRhdGE6IEQpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPihgJHt0aGlzLmFwaV91cmx9JHt1cmx9YCwgSlNPTi5zdHJpbmdpZnkoZGF0YSksIHtcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZTxUPih1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFQ+KGAke3RoaXMuYXBpX3VybH0ke3VybH1gLCB7XG4gICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgaGVhZGVycygpOiBIdHRwSGVhZGVycyB7XG4gICAgY29uc3QgaGVhZGVyc0NvbmZpZyA9IHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyhoZWFkZXJzQ29uZmlnKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// -----------------------------------------------------------------------------------------------------
|
|
2
|
+
// @ AUTH UTILITIES
|
|
3
|
+
//
|
|
4
|
+
// Methods are derivations of the Auth0 Angular-JWT helper service methods
|
|
5
|
+
// https://github.com/auth0/angular2-jwt
|
|
6
|
+
// -----------------------------------------------------------------------------------------------------
|
|
7
|
+
export class AuthUtils {
|
|
8
|
+
// -----------------------------------------------------------------------------------------------------
|
|
9
|
+
// @ Public methods
|
|
10
|
+
// -----------------------------------------------------------------------------------------------------
|
|
11
|
+
/**
|
|
12
|
+
* Is token expired?
|
|
13
|
+
*
|
|
14
|
+
* @param token
|
|
15
|
+
* @param offsetSeconds
|
|
16
|
+
*/
|
|
17
|
+
static isTokenExpired() {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvdXRpbC9hdXRoLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdHQUF3RztBQUN4RyxtQkFBbUI7QUFDbkIsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSx3Q0FBd0M7QUFDeEMsd0dBQXdHO0FBRXhHLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLHdHQUF3RztJQUN4RyxtQkFBbUI7SUFDbkIsd0dBQXdHO0lBRXhHOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQCBBVVRIIFVUSUxJVElFU1xuLy9cbi8vIE1ldGhvZHMgYXJlIGRlcml2YXRpb25zIG9mIHRoZSBBdXRoMCBBbmd1bGFyLUpXVCBoZWxwZXIgc2VydmljZSBtZXRob2RzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYXV0aDAvYW5ndWxhcjItand0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY2xhc3MgQXV0aFV0aWxzIHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQCBQdWJsaWMgbWV0aG9kc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBJcyB0b2tlbiBleHBpcmVkP1xuICAgKlxuICAgKiBAcGFyYW0gdG9rZW5cbiAgICogQHBhcmFtIG9mZnNldFNlY29uZHNcbiAgICovXG4gIHN0YXRpYyBpc1Rva2VuRXhwaXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGV4dGVuc29yLXRhYi1jb3JlLXV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy90ZWNoZXh0ZW5zb3ItdGFiLWNvcmUtdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './lib/tab-core-utility/auth/services/auth.service';
|
|
2
|
+
export * from './lib/tab-core-utility/auth/services/local-storage-jwt.service';
|
|
3
|
+
export * from './lib/tab-core-utility/auth/services/token-interceptor.service';
|
|
4
|
+
export * from './lib/tab-core-utility/core/api-types/auth';
|
|
5
|
+
export * from './lib/tab-core-utility/core/api-types/user';
|
|
6
|
+
export * from './lib/tab-core-utility/core/error-handler/error-handler-interceptor.service';
|
|
7
|
+
export * from './lib/tab-core-utility/core/error-handler/error-handler.store';
|
|
8
|
+
export * from './lib/tab-core-utility/core/error-handler/models/error-handler.state';
|
|
9
|
+
export * from './lib/tab-core-utility/core/http-client/api-url.token';
|
|
10
|
+
export * from './lib/tab-core-utility/core/http-client/api.service';
|
|
11
|
+
export * from './lib/tab-core-utility/core/util/auth.utils';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { LoginUser } from '../../core/api-types/auth';
|
|
3
|
+
import { UserResponse } from '../../core/api-types/user';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class AuthService {
|
|
6
|
+
private readonly apiService;
|
|
7
|
+
user(url: string): Observable<UserResponse>;
|
|
8
|
+
signIn(url: string, credentials: LoginUser): Observable<UserResponse>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthService, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthService>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class LocalStorageJwtService {
|
|
4
|
+
getItem(): Observable<string | null>;
|
|
5
|
+
setItem(data: string, appcode: string): Observable<string>;
|
|
6
|
+
removeItem(): Observable<boolean>;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageJwtService, never>;
|
|
8
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LocalStorageJwtService>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface NewUserRequest {
|
|
2
|
+
user: NewUser;
|
|
3
|
+
}
|
|
4
|
+
export interface NewUser {
|
|
5
|
+
username: string;
|
|
6
|
+
email: string;
|
|
7
|
+
password: string;
|
|
8
|
+
}
|
|
9
|
+
export interface LoginUserRequest {
|
|
10
|
+
user: LoginUser;
|
|
11
|
+
}
|
|
12
|
+
export interface LoginUser {
|
|
13
|
+
email: string;
|
|
14
|
+
password: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
+
export declare const ErrorHandlerStore: import("@angular/core").Type<{
|
|
3
|
+
code: import("@angular/core").Signal<number>;
|
|
4
|
+
message: import("@angular/core").Signal<string | undefined>;
|
|
5
|
+
handleError401: (error: HttpErrorResponse) => void;
|
|
6
|
+
handleError404: (error: HttpErrorResponse) => void;
|
|
7
|
+
} & import("@ngrx/signals").StateSignal<{
|
|
8
|
+
code: number;
|
|
9
|
+
message: string | undefined;
|
|
10
|
+
}>>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HttpParams, HttpHeaders } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ApiService {
|
|
5
|
+
private readonly http;
|
|
6
|
+
private readonly api_url;
|
|
7
|
+
get<T>(url: string, params?: HttpParams): Observable<T>;
|
|
8
|
+
post<T, D>(url: string, data?: D): Observable<T>;
|
|
9
|
+
put<T, D>(url: string, data: D): Observable<T>;
|
|
10
|
+
delete<T>(url: string): Observable<T>;
|
|
11
|
+
get headers(): HttpHeaders;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ApiService, never>;
|
|
13
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ApiService>;
|
|
14
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@techextensor/tab-core-utility",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^17.3.0",
|
|
6
|
+
"@angular/core": "^17.3.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"access": "public"
|
|
14
|
+
},
|
|
15
|
+
"module": "esm2022/techextensor-tab-core-utility.mjs",
|
|
16
|
+
"typings": "index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
"./package.json": {
|
|
19
|
+
"default": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./index.d.ts",
|
|
23
|
+
"esm2022": "./esm2022/techextensor-tab-core-utility.mjs",
|
|
24
|
+
"esm": "./esm2022/techextensor-tab-core-utility.mjs",
|
|
25
|
+
"default": "./esm2022/techextensor-tab-core-utility.mjs"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|