@albi_scando/as-user-lib 0.0.1-rc1 → 0.0.1-rc10
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/lib/default/default-user.mjs +9 -0
- package/esm2022/lib/default/default.mjs +8 -0
- package/esm2022/lib/enums/user-levels.enum.mjs +2 -0
- package/esm2022/lib/interfaces/setup.interface.mjs +3 -0
- package/esm2022/lib/interfaces/user.interface.mjs +2 -0
- package/esm2022/lib/services/user/user.service.interface.mjs +1 -1
- package/esm2022/lib/services/user/user.service.mjs +85 -8
- package/fesm2022/albi_scando-as-user-lib.mjs +96 -7
- package/fesm2022/albi_scando-as-user-lib.mjs.map +1 -1
- package/lib/default/default-user.d.ts +5 -0
- package/lib/default/default.d.ts +2 -0
- package/lib/enums/user-levels.enum.d.ts +3 -0
- package/lib/interfaces/setup.interface.d.ts +10 -0
- package/lib/interfaces/user.interface.d.ts +8 -0
- package/lib/services/user/user.service.d.ts +43 -3
- package/lib/services/user/user.service.interface.d.ts +28 -3
- package/package.json +1 -1
- package/esm2022/as-user-lib.mjs +0 -5
- package/fesm2022/as-user-lib.mjs +0 -35
- package/fesm2022/as-user-lib.mjs.map +0 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const DEFAULT_USERNAME = 'guest';
|
|
2
|
+
export const DEFAULT_LEVEL = "guest" /* USER_LEVELS.GUEST */;
|
|
3
|
+
export const defaultUser = {
|
|
4
|
+
username: DEFAULT_USERNAME,
|
|
5
|
+
level: DEFAULT_LEVEL,
|
|
6
|
+
language: undefined,
|
|
7
|
+
environment: undefined,
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC11c2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXMtdXNlci1saWIvc3JjL2xpYi9kZWZhdWx0L2RlZmF1bHQtdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBVyxPQUFPLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sYUFBYSxrQ0FBaUMsQ0FBQztBQUU1RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQVM7SUFDL0IsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixLQUFLLEVBQUUsYUFBNEI7SUFDbkMsUUFBUSxFQUFFLFNBQVM7SUFDbkIsV0FBVyxFQUFFLFNBQVM7Q0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVudW1zXHJcbmltcG9ydCB7IFVTRVJfTEVWRUxTIH0gZnJvbSAnLi4vZW51bXMvdXNlci1sZXZlbHMuZW51bSc7XHJcblxyXG4vLyBpbnRlcmZhY2VcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvdXNlci5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVNFUk5BTUU6IHN0cmluZyA9ICdndWVzdCc7XHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0xFVkVMOiBVU0VSX0xFVkVMUyA9IFVTRVJfTEVWRUxTLkdVRVNUO1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRVc2VyOiBVc2VyID0ge1xyXG4gIHVzZXJuYW1lOiBERUZBVUxUX1VTRVJOQU1FLFxyXG4gIGxldmVsOiBERUZBVUxUX0xFVkVMIGFzIFVTRVJfTEVWRUxTLFxyXG4gIGxhbmd1YWdlOiB1bmRlZmluZWQsXHJcbiAgZW52aXJvbm1lbnQ6IHVuZGVmaW5lZCxcclxufTtcclxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { stringEmpty } from '@albi_scando/as-constants-lib';
|
|
2
|
+
export const defaultUserLibSetup = {
|
|
3
|
+
api: {
|
|
4
|
+
patchUserDataAPIUrl: stringEmpty,
|
|
5
|
+
getUserDataAPIUrl: stringEmpty,
|
|
6
|
+
},
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzLXVzZXItbGliL3NyYy9saWIvZGVmYXVsdC9kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUs1RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBa0I7SUFDaEQsR0FBRyxFQUFFO1FBQ0gsbUJBQW1CLEVBQUUsV0FBVztRQUNoQyxpQkFBaUIsRUFBRSxXQUFXO0tBQy9CO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmluZ0VtcHR5IH0gZnJvbSAnQGFsYmlfc2NhbmRvL2FzLWNvbnN0YW50cy1saWInO1xyXG5cclxuLy8gaW50ZXJmYWNlc1xyXG5pbXBvcnQgeyBJVXNlckxpYlNldHVwIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXR1cC5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRVc2VyTGliU2V0dXA6IElVc2VyTGliU2V0dXAgPSB7XHJcbiAgYXBpOiB7XHJcbiAgICBwYXRjaFVzZXJEYXRhQVBJVXJsOiBzdHJpbmdFbXB0eSxcclxuICAgIGdldFVzZXJEYXRhQVBJVXJsOiBzdHJpbmdFbXB0eSxcclxuICB9LFxyXG59O1xyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1sZXZlbHMuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzLXVzZXItbGliL3NyYy9saWIvZW51bXMvdXNlci1sZXZlbHMuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGVudW0gVVNFUl9MRVZFTFMge1xyXG4gIEdVRVNUID0gJ2d1ZXN0JyxcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// enums
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXMtdXNlci1saWIvc3JjL2xpYi9pbnRlcmZhY2VzL3NldHVwLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZW51bXNcclxuXHJcbi8qKlxyXG4gKiBDb25maWd1cmF0aW9uIGludGVyZmFjZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJVXNlckxpYlNldHVwIHtcclxuICBhcGk6IEFQSTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBUEkge1xyXG4gIHBhdGNoVXNlckRhdGFBUElVcmw6IHN0cmluZztcclxuICBnZXRVc2VyRGF0YUFQSVVybDogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcy11c2VyLWxpYi9zcmMvbGliL2ludGVyZmFjZXMvdXNlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVudW1zXHJcbmltcG9ydCB7IExBTkdVQUdFUyB9IGZyb20gJ0BhbGJpX3NjYW5kby9hcy1jb25zdGFudHMtbGliJztcclxuaW1wb3J0IHsgVVNFUl9MRVZFTFMgfSBmcm9tICcuLi9lbnVtcy91c2VyLWxldmVscy5lbnVtJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XHJcbiAgdXNlcm5hbWU6IHN0cmluZztcclxuICBsZXZlbDogVVNFUl9MRVZFTFM7XHJcbiAgbGFuZ3VhZ2U6IExBTkdVQUdFUyB8IHVuZGVmaW5lZDtcclxuICBlbnZpcm9ubWVudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzLXVzZXItbGliL3NyYy9saWIvc2VydmljZXMvdXNlci91c2VyLnNlcnZpY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vLyBJbnRlcmZhY2VzXHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3VzZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSVVzZXJMaWJTZXR1cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2V0dXAuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBVc2VyIG9iamVjdFxyXG4gICAqL1xyXG4gIHVzZXI6IFVzZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBzZXJ2aWNlIGNvbmZpZ3VyYXRpb25cclxuICAgKiBAcGFyYW0ge1BhcnRpYWw8SVVzZXJMaWJTZXR1cD59IHNldHVwIGNvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8dm9pZD59XHJcbiAgICovXHJcbiAgc2V0dXAkKHNldHVwOiBQYXJ0aWFsPElVc2VyTGliU2V0dXA+KTogT2JzZXJ2YWJsZTx2b2lkPjtcclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHVzZXIgb2JqZWN0IHdpdGggcHJvdmlkZWQgZGF0YVxyXG4gICAqIEBwYXJhbSB7UGFydGlhbDxVc2VyPn0gdXNlciBwYXJ0aWFsIHVzZXIgaW5mbyB0byBtb2RpZnlcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTx2b2lkPn1cclxuICAgKi9cclxuICBwYXRjaFVzZXJEYXRhJCh1c2VyOiBQYXJ0aWFsPFVzZXI+KTogT2JzZXJ2YWJsZTx2b2lkPjtcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHVzZXIgZGF0YVxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFVzZXI+fSB1c2VyIGRhdGFcclxuICAgKi9cclxuICBnZXRVc2VyRGF0YSQoKTogT2JzZXJ2YWJsZTxVc2VyPjtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdXNlciBkYXRhIHJlc2lkZSBvbiBhIGRiLCBmZXRjaCBpdCBhbmQgdXNlIGl0IHRvIHN5bmNocm9uaXplIHNlcnZpY2UgdXNlciBvYmplY3QuXHJcbiAgICogSWYgbm8gZGIgaXMgYXZhaWxhYmxlLCBzZXQgY3VycmVudCB1c2VyIGVxdWFsIHRvIGl0c2VsZi5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTx2b2lkPn1cclxuICAgKi9cclxuICBzeW5jVXNlckRhdGEkKCk6IE9ic2VydmFibGU8dm9pZD47XHJcbn1cclxuIl19
|
|
@@ -1,22 +1,99 @@
|
|
|
1
|
-
import { Injectable,
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { of, switchMap } from 'rxjs';
|
|
3
|
+
import { HttpService } from '@albi_scando/as-http-lib';
|
|
4
|
+
// Assets
|
|
5
|
+
import { defaultUserLibSetup } from '../../default/default';
|
|
6
|
+
import { defaultUser } from '../../default/default-user';
|
|
7
|
+
// Constants
|
|
8
|
+
import { observableEmpty$, stringEmpty } from '@albi_scando/as-constants-lib';
|
|
9
|
+
import { LoggerService } from '@albi_scando/as-log-lib';
|
|
2
10
|
import * as i0 from "@angular/core";
|
|
3
11
|
/**
|
|
4
12
|
*
|
|
5
13
|
*/
|
|
6
14
|
export class UserService {
|
|
15
|
+
/**
|
|
16
|
+
* Constructor
|
|
17
|
+
* @constructor
|
|
18
|
+
* @ignore
|
|
19
|
+
*/
|
|
7
20
|
constructor() {
|
|
8
21
|
/**
|
|
9
|
-
* {@link IUserService.
|
|
22
|
+
* {@link IUserService.user}
|
|
10
23
|
*/
|
|
11
|
-
this.
|
|
24
|
+
this.user = defaultUser;
|
|
25
|
+
/**
|
|
26
|
+
* {@link HttpService}
|
|
27
|
+
*/
|
|
28
|
+
this._httpService = inject(HttpService);
|
|
29
|
+
/**
|
|
30
|
+
* {@link LoggerService}
|
|
31
|
+
*/
|
|
32
|
+
this._loggerService = inject(LoggerService);
|
|
33
|
+
/**
|
|
34
|
+
* PATCH user data api url
|
|
35
|
+
*/
|
|
36
|
+
this._patchUserDataAPIUrl = stringEmpty;
|
|
37
|
+
/**
|
|
38
|
+
* GET user data api url
|
|
39
|
+
*/
|
|
40
|
+
this._getUserDataAPIUrl = stringEmpty;
|
|
41
|
+
this.setup$(defaultUserLibSetup).subscribe();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* {@link IUserService.setup$}
|
|
45
|
+
*/
|
|
46
|
+
setup$(setup) {
|
|
47
|
+
this._patchUserDataAPIUrl = setup.api?.patchUserDataAPIUrl || stringEmpty;
|
|
48
|
+
this._getUserDataAPIUrl = setup.api?.getUserDataAPIUrl || stringEmpty;
|
|
49
|
+
return observableEmpty$;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* {@link IUserService.patchUserData$}
|
|
53
|
+
*/
|
|
54
|
+
patchUserData$(user) {
|
|
55
|
+
const httpRequest = {
|
|
56
|
+
url: this._patchUserDataAPIUrl,
|
|
57
|
+
body: user,
|
|
58
|
+
};
|
|
59
|
+
const updateUserData$ = this._httpService.patch(httpRequest);
|
|
60
|
+
return observableEmpty$.pipe(switchMap(() => {
|
|
61
|
+
if (httpRequest.url) {
|
|
62
|
+
return updateUserData$;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.user = { ...this.user, ...user };
|
|
66
|
+
return observableEmpty$;
|
|
67
|
+
}
|
|
68
|
+
}), switchMap(() => this.syncUserData$()));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* {@link IUserService.syncUserData$}
|
|
72
|
+
*/
|
|
73
|
+
syncUserData$() {
|
|
74
|
+
return this.getUserData$().pipe(switchMap((user) => {
|
|
75
|
+
this.user = user;
|
|
76
|
+
this._loggerService.info('User info updated', this.user);
|
|
77
|
+
return observableEmpty$;
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* {@link IUserService.getUserData$}
|
|
82
|
+
*/
|
|
83
|
+
getUserData$() {
|
|
84
|
+
const httpRequest = {
|
|
85
|
+
url: this._getUserDataAPIUrl,
|
|
86
|
+
};
|
|
87
|
+
const getUserData$ = this._httpService.get(httpRequest);
|
|
88
|
+
return httpRequest.url ? getUserData$ : of(this.user);
|
|
12
89
|
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
14
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
90
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
91
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
15
92
|
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, decorators: [{
|
|
17
94
|
type: Injectable,
|
|
18
95
|
args: [{
|
|
19
96
|
providedIn: 'root',
|
|
20
97
|
}]
|
|
21
|
-
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
}], ctorParameters: () => [] });
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXMtdXNlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy91c2VyL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsU0FBUztBQUNULE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxZQUFZO0FBQ1osT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBVTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFeEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sV0FBVztJQTBCdEI7Ozs7T0FJRztJQUNIO1FBOUJBOztXQUVHO1FBQ0ksU0FBSSxHQUFTLFdBQVcsQ0FBQztRQUVoQzs7V0FFRztRQUNLLGlCQUFZLEdBQWdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4RDs7V0FFRztRQUNLLG1CQUFjLEdBQWtCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU5RDs7V0FFRztRQUNLLHlCQUFvQixHQUFXLFdBQVcsQ0FBQztRQUVuRDs7V0FFRztRQUNLLHVCQUFrQixHQUFXLFdBQVcsQ0FBQztRQVEvQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEtBQTZCO1FBQ3pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLG1CQUFtQixJQUFJLFdBQVcsQ0FBQztRQUMxRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsSUFBSSxXQUFXLENBQUM7UUFFdEUsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjLENBQUMsSUFBbUI7UUFDdkMsTUFBTSxXQUFXLEdBQVU7WUFDekIsR0FBRyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDOUIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDO1FBQ0YsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUMxQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sZUFBZSxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sZ0JBQWdCLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FDdEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUM3QixTQUFTLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekQsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWTtRQUNqQixNQUFNLFdBQVcsR0FBUTtZQUN2QixHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUM3QixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQXFCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7OEdBMUZVLFdBQVc7a0hBQVgsV0FBVyxjQUZWLE1BQU07OzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnQGFsYmlfc2NhbmRvL2FzLWh0dHAtbGliJztcclxuXHJcbi8vIEFzc2V0c1xyXG5pbXBvcnQgeyBkZWZhdWx0VXNlckxpYlNldHVwIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC9kZWZhdWx0JztcclxuaW1wb3J0IHsgZGVmYXVsdFVzZXIgfSBmcm9tICcuLi8uLi9kZWZhdWx0L2RlZmF1bHQtdXNlcic7XHJcblxyXG4vLyBDb25zdGFudHNcclxuaW1wb3J0IHsgb2JzZXJ2YWJsZUVtcHR5JCwgc3RyaW5nRW1wdHkgfSBmcm9tICdAYWxiaV9zY2FuZG8vYXMtY29uc3RhbnRzLWxpYic7XHJcblxyXG4vLyBFbnVtc1xyXG5cclxuLy8gSW50ZXJmYWNlc1xyXG5pbXBvcnQgeyBQYXRjaCB9IGZyb20gJ0BhbGJpX3NjYW5kby9hcy1odHRwLWxpYi9saWIvbW9kZWxzL3BhdGNoJztcclxuaW1wb3J0IHsgR2V0IH0gZnJvbSAnQGFsYmlfc2NhbmRvL2FzLWh0dHAtbGliL2xpYi9tb2RlbHMvZ2V0JztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdXNlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXIuc2VydmljZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJVXNlckxpYlNldHVwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zZXR1cC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnQGFsYmlfc2NhbmRvL2FzLWxvZy1saWInO1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclNlcnZpY2UgaW1wbGVtZW50cyBJVXNlclNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIHtAbGluayBJVXNlclNlcnZpY2UudXNlcn1cclxuICAgKi9cclxuICBwdWJsaWMgdXNlcjogVXNlciA9IGRlZmF1bHRVc2VyO1xyXG5cclxuICAvKipcclxuICAgKiB7QGxpbmsgSHR0cFNlcnZpY2V9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlID0gaW5qZWN0KEh0dHBTZXJ2aWNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICoge0BsaW5rIExvZ2dlclNlcnZpY2V9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSA9IGluamVjdChMb2dnZXJTZXJ2aWNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUEFUQ0ggdXNlciBkYXRhIGFwaSB1cmxcclxuICAgKi9cclxuICBwcml2YXRlIF9wYXRjaFVzZXJEYXRhQVBJVXJsOiBzdHJpbmcgPSBzdHJpbmdFbXB0eTtcclxuXHJcbiAgLyoqXHJcbiAgICogR0VUIHVzZXIgZGF0YSBhcGkgdXJsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZ2V0VXNlckRhdGFBUElVcmw6IHN0cmluZyA9IHN0cmluZ0VtcHR5O1xyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RvclxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2V0dXAkKGRlZmF1bHRVc2VyTGliU2V0dXApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICoge0BsaW5rIElVc2VyU2VydmljZS5zZXR1cCR9XHJcbiAgICovXHJcbiAgcHVibGljIHNldHVwJChzZXR1cDogUGFydGlhbDxJVXNlckxpYlNldHVwPik6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgdGhpcy5fcGF0Y2hVc2VyRGF0YUFQSVVybCA9IHNldHVwLmFwaT8ucGF0Y2hVc2VyRGF0YUFQSVVybCB8fCBzdHJpbmdFbXB0eTtcclxuICAgIHRoaXMuX2dldFVzZXJEYXRhQVBJVXJsID0gc2V0dXAuYXBpPy5nZXRVc2VyRGF0YUFQSVVybCB8fCBzdHJpbmdFbXB0eTtcclxuXHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUVtcHR5JDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHtAbGluayBJVXNlclNlcnZpY2UucGF0Y2hVc2VyRGF0YSR9XHJcbiAgICovXHJcbiAgcHVibGljIHBhdGNoVXNlckRhdGEkKHVzZXI6IFBhcnRpYWw8VXNlcj4pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGh0dHBSZXF1ZXN0OiBQYXRjaCA9IHtcclxuICAgICAgdXJsOiB0aGlzLl9wYXRjaFVzZXJEYXRhQVBJVXJsLFxyXG4gICAgICBib2R5OiB1c2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHVwZGF0ZVVzZXJEYXRhJDogT2JzZXJ2YWJsZTx2b2lkPiA9XHJcbiAgICAgIHRoaXMuX2h0dHBTZXJ2aWNlLnBhdGNoKGh0dHBSZXF1ZXN0KTtcclxuICAgIHJldHVybiBvYnNlcnZhYmxlRW1wdHkkLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGh0dHBSZXF1ZXN0LnVybCkge1xyXG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZVVzZXJEYXRhJDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy51c2VyID0geyAuLi50aGlzLnVzZXIsIC4uLnVzZXIgfTtcclxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlRW1wdHkkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN5bmNVc2VyRGF0YSQoKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB7QGxpbmsgSVVzZXJTZXJ2aWNlLnN5bmNVc2VyRGF0YSR9XHJcbiAgICovXHJcbiAgcHVibGljIHN5bmNVc2VyRGF0YSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyRGF0YSQoKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHVzZXI6IFVzZXIpID0+IHtcclxuICAgICAgICB0aGlzLnVzZXIgPSB1c2VyO1xyXG4gICAgICAgIHRoaXMuX2xvZ2dlclNlcnZpY2UuaW5mbygnVXNlciBpbmZvIHVwZGF0ZWQnLCB0aGlzLnVzZXIpO1xyXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlRW1wdHkkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHtAbGluayBJVXNlclNlcnZpY2UuZ2V0VXNlckRhdGEkfVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRVc2VyRGF0YSQoKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICBjb25zdCBodHRwUmVxdWVzdDogR2V0ID0ge1xyXG4gICAgICB1cmw6IHRoaXMuX2dldFVzZXJEYXRhQVBJVXJsLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGdldFVzZXJEYXRhJDogT2JzZXJ2YWJsZTxVc2VyPiA9IHRoaXMuX2h0dHBTZXJ2aWNlLmdldChodHRwUmVxdWVzdCk7XHJcbiAgICByZXR1cm4gaHR0cFJlcXVlc3QudXJsID8gZ2V0VXNlckRhdGEkIDogb2YodGhpcy51c2VyKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,25 +1,114 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { inject, Injectable } from '@angular/core';
|
|
3
|
+
import { switchMap, of } from 'rxjs';
|
|
4
|
+
import { HttpService } from '@albi_scando/as-http-lib';
|
|
5
|
+
import { stringEmpty, observableEmpty$ } from '@albi_scando/as-constants-lib';
|
|
6
|
+
import { LoggerService } from '@albi_scando/as-log-lib';
|
|
7
|
+
|
|
8
|
+
const defaultUserLibSetup = {
|
|
9
|
+
api: {
|
|
10
|
+
patchUserDataAPIUrl: stringEmpty,
|
|
11
|
+
getUserDataAPIUrl: stringEmpty,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const DEFAULT_USERNAME = 'guest';
|
|
16
|
+
const DEFAULT_LEVEL = "guest" /* USER_LEVELS.GUEST */;
|
|
17
|
+
const defaultUser = {
|
|
18
|
+
username: DEFAULT_USERNAME,
|
|
19
|
+
level: DEFAULT_LEVEL,
|
|
20
|
+
language: undefined,
|
|
21
|
+
environment: undefined,
|
|
22
|
+
};
|
|
3
23
|
|
|
4
24
|
/**
|
|
5
25
|
*
|
|
6
26
|
*/
|
|
7
27
|
class UserService {
|
|
28
|
+
/**
|
|
29
|
+
* Constructor
|
|
30
|
+
* @constructor
|
|
31
|
+
* @ignore
|
|
32
|
+
*/
|
|
8
33
|
constructor() {
|
|
9
34
|
/**
|
|
10
|
-
* {@link IUserService.
|
|
35
|
+
* {@link IUserService.user}
|
|
36
|
+
*/
|
|
37
|
+
this.user = defaultUser;
|
|
38
|
+
/**
|
|
39
|
+
* {@link HttpService}
|
|
40
|
+
*/
|
|
41
|
+
this._httpService = inject(HttpService);
|
|
42
|
+
/**
|
|
43
|
+
* {@link LoggerService}
|
|
44
|
+
*/
|
|
45
|
+
this._loggerService = inject(LoggerService);
|
|
46
|
+
/**
|
|
47
|
+
* PATCH user data api url
|
|
48
|
+
*/
|
|
49
|
+
this._patchUserDataAPIUrl = stringEmpty;
|
|
50
|
+
/**
|
|
51
|
+
* GET user data api url
|
|
11
52
|
*/
|
|
12
|
-
this.
|
|
53
|
+
this._getUserDataAPIUrl = stringEmpty;
|
|
54
|
+
this.setup$(defaultUserLibSetup).subscribe();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* {@link IUserService.setup$}
|
|
58
|
+
*/
|
|
59
|
+
setup$(setup) {
|
|
60
|
+
this._patchUserDataAPIUrl = setup.api?.patchUserDataAPIUrl || stringEmpty;
|
|
61
|
+
this._getUserDataAPIUrl = setup.api?.getUserDataAPIUrl || stringEmpty;
|
|
62
|
+
return observableEmpty$;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* {@link IUserService.patchUserData$}
|
|
66
|
+
*/
|
|
67
|
+
patchUserData$(user) {
|
|
68
|
+
const httpRequest = {
|
|
69
|
+
url: this._patchUserDataAPIUrl,
|
|
70
|
+
body: user,
|
|
71
|
+
};
|
|
72
|
+
const updateUserData$ = this._httpService.patch(httpRequest);
|
|
73
|
+
return observableEmpty$.pipe(switchMap(() => {
|
|
74
|
+
if (httpRequest.url) {
|
|
75
|
+
return updateUserData$;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.user = { ...this.user, ...user };
|
|
79
|
+
return observableEmpty$;
|
|
80
|
+
}
|
|
81
|
+
}), switchMap(() => this.syncUserData$()));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* {@link IUserService.syncUserData$}
|
|
85
|
+
*/
|
|
86
|
+
syncUserData$() {
|
|
87
|
+
return this.getUserData$().pipe(switchMap((user) => {
|
|
88
|
+
this.user = user;
|
|
89
|
+
this._loggerService.info('User info updated', this.user);
|
|
90
|
+
return observableEmpty$;
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* {@link IUserService.getUserData$}
|
|
95
|
+
*/
|
|
96
|
+
getUserData$() {
|
|
97
|
+
const httpRequest = {
|
|
98
|
+
url: this._getUserDataAPIUrl,
|
|
99
|
+
};
|
|
100
|
+
const getUserData$ = this._httpService.get(httpRequest);
|
|
101
|
+
return httpRequest.url ? getUserData$ : of(this.user);
|
|
13
102
|
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
15
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
103
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
104
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
16
105
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, decorators: [{
|
|
18
107
|
type: Injectable,
|
|
19
108
|
args: [{
|
|
20
109
|
providedIn: 'root',
|
|
21
110
|
}]
|
|
22
|
-
}] });
|
|
111
|
+
}], ctorParameters: () => [] });
|
|
23
112
|
|
|
24
113
|
/*
|
|
25
114
|
* Public API Surface of as-user-lib
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"albi_scando-as-user-lib.mjs","sources":["../../../projects/as-user-lib/src/lib/services/user/user.service.ts","../../../projects/as-user-lib/src/public-api.ts","../../../projects/as-user-lib/src/albi_scando-as-user-lib.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"albi_scando-as-user-lib.mjs","sources":["../../../projects/as-user-lib/src/lib/default/default.ts","../../../projects/as-user-lib/src/lib/default/default-user.ts","../../../projects/as-user-lib/src/lib/services/user/user.service.ts","../../../projects/as-user-lib/src/public-api.ts","../../../projects/as-user-lib/src/albi_scando-as-user-lib.ts"],"sourcesContent":["import { stringEmpty } from '@albi_scando/as-constants-lib';\r\n\r\n// interfaces\r\nimport { IUserLibSetup } from '../interfaces/setup.interface';\r\n\r\nexport const defaultUserLibSetup: IUserLibSetup = {\r\n api: {\r\n patchUserDataAPIUrl: stringEmpty,\r\n getUserDataAPIUrl: stringEmpty,\r\n },\r\n};\r\n","// enums\r\nimport { USER_LEVELS } from '../enums/user-levels.enum';\r\n\r\n// interface\r\nimport { User } from '../interfaces/user.interface';\r\n\r\nexport const DEFAULT_USERNAME: string = 'guest';\r\nexport const DEFAULT_LEVEL: USER_LEVELS = USER_LEVELS.GUEST;\r\n\r\nexport const defaultUser: User = {\r\n username: DEFAULT_USERNAME,\r\n level: DEFAULT_LEVEL as USER_LEVELS,\r\n language: undefined,\r\n environment: undefined,\r\n};\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Observable, of, switchMap } from 'rxjs';\r\n\r\nimport { HttpService } from '@albi_scando/as-http-lib';\r\n\r\n// Assets\r\nimport { defaultUserLibSetup } from '../../default/default';\r\nimport { defaultUser } from '../../default/default-user';\r\n\r\n// Constants\r\nimport { observableEmpty$, stringEmpty } from '@albi_scando/as-constants-lib';\r\n\r\n// Enums\r\n\r\n// Interfaces\r\nimport { Patch } from '@albi_scando/as-http-lib/lib/models/patch';\r\nimport { Get } from '@albi_scando/as-http-lib/lib/models/get';\r\nimport { User } from '../../interfaces/user.interface';\r\nimport { IUserService } from './user.service.interface';\r\nimport { IUserLibSetup } from '../../interfaces/setup.interface';\r\nimport { LoggerService } from '@albi_scando/as-log-lib';\r\n\r\n/**\r\n *\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserService implements IUserService {\r\n /**\r\n * {@link IUserService.user}\r\n */\r\n public user: User = defaultUser;\r\n\r\n /**\r\n * {@link HttpService}\r\n */\r\n private _httpService: HttpService = inject(HttpService);\r\n\r\n /**\r\n * {@link LoggerService}\r\n */\r\n private _loggerService: LoggerService = inject(LoggerService);\r\n\r\n /**\r\n * PATCH user data api url\r\n */\r\n private _patchUserDataAPIUrl: string = stringEmpty;\r\n\r\n /**\r\n * GET user data api url\r\n */\r\n private _getUserDataAPIUrl: string = stringEmpty;\r\n\r\n /**\r\n * Constructor\r\n * @constructor\r\n * @ignore\r\n */\r\n constructor() {\r\n this.setup$(defaultUserLibSetup).subscribe();\r\n }\r\n\r\n /**\r\n * {@link IUserService.setup$}\r\n */\r\n public setup$(setup: Partial<IUserLibSetup>): Observable<void> {\r\n this._patchUserDataAPIUrl = setup.api?.patchUserDataAPIUrl || stringEmpty;\r\n this._getUserDataAPIUrl = setup.api?.getUserDataAPIUrl || stringEmpty;\r\n\r\n return observableEmpty$;\r\n }\r\n\r\n /**\r\n * {@link IUserService.patchUserData$}\r\n */\r\n public patchUserData$(user: Partial<User>): Observable<void> {\r\n const httpRequest: Patch = {\r\n url: this._patchUserDataAPIUrl,\r\n body: user,\r\n };\r\n const updateUserData$: Observable<void> =\r\n this._httpService.patch(httpRequest);\r\n return observableEmpty$.pipe(\r\n switchMap(() => {\r\n if (httpRequest.url) {\r\n return updateUserData$;\r\n } else {\r\n this.user = { ...this.user, ...user };\r\n return observableEmpty$;\r\n }\r\n }),\r\n switchMap(() => this.syncUserData$())\r\n );\r\n }\r\n\r\n /**\r\n * {@link IUserService.syncUserData$}\r\n */\r\n public syncUserData$(): Observable<void> {\r\n return this.getUserData$().pipe(\r\n switchMap((user: User) => {\r\n this.user = user;\r\n this._loggerService.info('User info updated', this.user);\r\n return observableEmpty$;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * {@link IUserService.getUserData$}\r\n */\r\n public getUserData$(): Observable<User> {\r\n const httpRequest: Get = {\r\n url: this._getUserDataAPIUrl,\r\n };\r\n const getUserData$: Observable<User> = this._httpService.get(httpRequest);\r\n return httpRequest.url ? getUserData$ : of(this.user);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of as-user-lib\r\n */\r\n\r\n// enums\r\n\r\n// services\r\nexport * from './lib/services/user/user.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,54 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { User } from '../../interfaces/user.interface';
|
|
2
3
|
import { IUserService } from './user.service.interface';
|
|
4
|
+
import { IUserLibSetup } from '../../interfaces/setup.interface';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
6
|
/**
|
|
5
7
|
*
|
|
6
8
|
*/
|
|
7
9
|
export declare class UserService implements IUserService {
|
|
8
10
|
/**
|
|
9
|
-
* {@link IUserService.
|
|
11
|
+
* {@link IUserService.user}
|
|
10
12
|
*/
|
|
11
|
-
|
|
13
|
+
user: User;
|
|
14
|
+
/**
|
|
15
|
+
* {@link HttpService}
|
|
16
|
+
*/
|
|
17
|
+
private _httpService;
|
|
18
|
+
/**
|
|
19
|
+
* {@link LoggerService}
|
|
20
|
+
*/
|
|
21
|
+
private _loggerService;
|
|
22
|
+
/**
|
|
23
|
+
* PATCH user data api url
|
|
24
|
+
*/
|
|
25
|
+
private _patchUserDataAPIUrl;
|
|
26
|
+
/**
|
|
27
|
+
* GET user data api url
|
|
28
|
+
*/
|
|
29
|
+
private _getUserDataAPIUrl;
|
|
30
|
+
/**
|
|
31
|
+
* Constructor
|
|
32
|
+
* @constructor
|
|
33
|
+
* @ignore
|
|
34
|
+
*/
|
|
35
|
+
constructor();
|
|
36
|
+
/**
|
|
37
|
+
* {@link IUserService.setup$}
|
|
38
|
+
*/
|
|
39
|
+
setup$(setup: Partial<IUserLibSetup>): Observable<void>;
|
|
40
|
+
/**
|
|
41
|
+
* {@link IUserService.patchUserData$}
|
|
42
|
+
*/
|
|
43
|
+
patchUserData$(user: Partial<User>): Observable<void>;
|
|
44
|
+
/**
|
|
45
|
+
* {@link IUserService.syncUserData$}
|
|
46
|
+
*/
|
|
47
|
+
syncUserData$(): Observable<void>;
|
|
48
|
+
/**
|
|
49
|
+
* {@link IUserService.getUserData$}
|
|
50
|
+
*/
|
|
51
|
+
getUserData$(): Observable<User>;
|
|
12
52
|
static ɵfac: i0.ɵɵFactoryDeclaration<UserService, never>;
|
|
13
53
|
static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
|
|
14
54
|
}
|
|
@@ -1,7 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { User } from '../../interfaces/user.interface';
|
|
3
|
+
import { IUserLibSetup } from '../../interfaces/setup.interface';
|
|
2
4
|
export interface IUserService {
|
|
3
5
|
/**
|
|
4
|
-
*
|
|
6
|
+
* User object
|
|
5
7
|
*/
|
|
6
|
-
|
|
8
|
+
user: User;
|
|
9
|
+
/**
|
|
10
|
+
* Set service configuration
|
|
11
|
+
* @param {Partial<IUserLibSetup>} setup configuration object
|
|
12
|
+
* @returns {Observable<void>}
|
|
13
|
+
*/
|
|
14
|
+
setup$(setup: Partial<IUserLibSetup>): Observable<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Update user object with provided data
|
|
17
|
+
* @param {Partial<User>} user partial user info to modify
|
|
18
|
+
* @returns {Observable<void>}
|
|
19
|
+
*/
|
|
20
|
+
patchUserData$(user: Partial<User>): Observable<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Get user data
|
|
23
|
+
* @returns {Observable<User>} user data
|
|
24
|
+
*/
|
|
25
|
+
getUserData$(): Observable<User>;
|
|
26
|
+
/**
|
|
27
|
+
* If user data reside on a db, fetch it and use it to synchronize service user object.
|
|
28
|
+
* If no db is available, set current user equal to itself.
|
|
29
|
+
* @returns {Observable<void>}
|
|
30
|
+
*/
|
|
31
|
+
syncUserData$(): Observable<void>;
|
|
7
32
|
}
|
package/package.json
CHANGED
package/esm2022/as-user-lib.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXMtdXNlci1saWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcy11c2VyLWxpYi9zcmMvYXMtdXNlci1saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
package/fesm2022/as-user-lib.mjs
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, Injectable } from '@angular/core';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
class UserService {
|
|
8
|
-
constructor() {
|
|
9
|
-
/**
|
|
10
|
-
* {@link IUserService.token}
|
|
11
|
-
*/
|
|
12
|
-
this.token = signal('');
|
|
13
|
-
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
15
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
16
|
-
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: UserService, decorators: [{
|
|
18
|
-
type: Injectable,
|
|
19
|
-
args: [{
|
|
20
|
-
providedIn: 'root',
|
|
21
|
-
}]
|
|
22
|
-
}] });
|
|
23
|
-
|
|
24
|
-
/*
|
|
25
|
-
* Public API Surface of as-user-lib
|
|
26
|
-
*/
|
|
27
|
-
// enums
|
|
28
|
-
// services
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Generated bundle index. Do not edit.
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
export { UserService };
|
|
35
|
-
//# sourceMappingURL=as-user-lib.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"as-user-lib.mjs","sources":["../../../projects/as-user-lib/src/lib/services/user/user.service.ts","../../../projects/as-user-lib/src/public-api.ts","../../../projects/as-user-lib/src/as-user-lib.ts"],"sourcesContent":["import { Injectable, WritableSignal, signal } from '@angular/core';\r\n\r\nimport { IUserService } from './user.service.interface';\r\n\r\n/**\r\n *\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserService implements IUserService {\r\n /**\r\n * {@link IUserService.token}\r\n */\r\n public token: WritableSignal<string> = signal('');\r\n}\r\n","/*\r\n * Public API Surface of as-user-lib\r\n */\r\n\r\n// enums\r\n\r\n// services\r\nexport * from './lib/services/user/user.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAIA;;AAEG;MAIU,WAAW,CAAA;AAHxB,IAAA,WAAA,GAAA;AAIE;;AAEG;AACI,QAAA,IAAA,CAAA,KAAK,GAA2B,MAAM,CAAC,EAAE,CAAC,CAAC;AACnD,KAAA;8GALY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACTD;;AAEG;AAEH;AAEA;;ACNA;;AAEG;;;;"}
|