@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.
Files changed (26) hide show
  1. package/esm2022/index.mjs +14 -0
  2. package/esm2022/lib/tab-core-utility/auth/services/auth.service.mjs +23 -0
  3. package/esm2022/lib/tab-core-utility/auth/services/local-storage-jwt.service.mjs +30 -0
  4. package/esm2022/lib/tab-core-utility/auth/services/token-interceptor.service.mjs +28 -0
  5. package/esm2022/lib/tab-core-utility/core/api-types/auth.mjs +2 -0
  6. package/esm2022/lib/tab-core-utility/core/api-types/user.mjs +2 -0
  7. package/esm2022/lib/tab-core-utility/core/error-handler/error-handler-interceptor.service.mjs +25 -0
  8. package/esm2022/lib/tab-core-utility/core/error-handler/error-handler.store.mjs +21 -0
  9. package/esm2022/lib/tab-core-utility/core/error-handler/models/error-handler.state.mjs +5 -0
  10. package/esm2022/lib/tab-core-utility/core/http-client/api-url.token.mjs +3 -0
  11. package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +43 -0
  12. package/esm2022/lib/tab-core-utility/core/util/auth.utils.mjs +21 -0
  13. package/esm2022/techextensor-tab-core-utility.mjs +5 -0
  14. package/index.d.ts +11 -0
  15. package/lib/tab-core-utility/auth/services/auth.service.d.ts +11 -0
  16. package/lib/tab-core-utility/auth/services/local-storage-jwt.service.d.ts +9 -0
  17. package/lib/tab-core-utility/auth/services/token-interceptor.service.d.ts +3 -0
  18. package/lib/tab-core-utility/core/api-types/auth.d.ts +15 -0
  19. package/lib/tab-core-utility/core/api-types/user.d.ts +10 -0
  20. package/lib/tab-core-utility/core/error-handler/error-handler-interceptor.service.d.ts +3 -0
  21. package/lib/tab-core-utility/core/error-handler/error-handler.store.d.ts +10 -0
  22. package/lib/tab-core-utility/core/error-handler/models/error-handler.state.d.ts +5 -0
  23. package/lib/tab-core-utility/core/http-client/api-url.token.d.ts +2 -0
  24. package/lib/tab-core-utility/core/http-client/api.service.d.ts +14 -0
  25. package/lib/tab-core-utility/core/util/auth.utils.d.ts +9 -0
  26. 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,3 @@
1
+ import { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ export declare const TokenInterceptorService: (request: HttpRequest<any>, next: HttpHandlerFn) => Observable<HttpEvent<any>>;
@@ -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
+ export interface User {
2
+ email: string;
3
+ token: string;
4
+ username: string;
5
+ bio: string;
6
+ image: string;
7
+ }
8
+ export interface UserResponse {
9
+ user: User;
10
+ }
@@ -0,0 +1,3 @@
1
+ import { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ export declare const errorHandlingInterceptor: (request: HttpRequest<any>, next: HttpHandlerFn) => Observable<HttpEvent<any>>;
@@ -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,5 @@
1
+ export interface ErrorHandlerState {
2
+ code: number;
3
+ message: string | undefined;
4
+ }
5
+ export declare const errorHandlerInitialState: ErrorHandlerState;
@@ -0,0 +1,2 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export declare const API_URL: InjectionToken<string>;
@@ -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
+ }
@@ -0,0 +1,9 @@
1
+ export declare class AuthUtils {
2
+ /**
3
+ * Is token expired?
4
+ *
5
+ * @param token
6
+ * @param offsetSeconds
7
+ */
8
+ static isTokenExpired(): boolean;
9
+ }
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
+ }