@albi_scando/as-user-lib 0.0.1-rc1 → 0.0.1-rc2
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 +10 -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 +74 -7
- package/fesm2022/albi_scando-as-user-lib.mjs +86 -6
- package/fesm2022/albi_scando-as-user-lib.mjs.map +1 -1
- package/lib/default/default-user.d.ts +7 -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 +7 -0
- package/lib/services/user/user.service.d.ts +41 -0
- package/lib/services/user/user.service.interface.d.ts +30 -0
- 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,10 @@
|
|
|
1
|
+
import { LANGUAGES } from '@albi_scando/as-language-lib/lib/enums/languages.enum';
|
|
2
|
+
export const DEFAULT_USERNAME = 'guest';
|
|
3
|
+
export const DEFAULT_LEVEL = "guest" /* USER_LEVELS.GUEST */;
|
|
4
|
+
export const DEFAULT_LANGUAGE = LANGUAGES.EnglishLanguageCode;
|
|
5
|
+
export const defaultUser = {
|
|
6
|
+
username: DEFAULT_USERNAME,
|
|
7
|
+
level: DEFAULT_LEVEL,
|
|
8
|
+
language: DEFAULT_LANGUAGE,
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC11c2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXMtdXNlci1saWIvc3JjL2xpYi9kZWZhdWx0L2RlZmF1bHQtdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFRbEYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQVcsT0FBTyxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLGFBQWEsa0NBQWlDLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBUztJQUMvQixRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLEtBQUssRUFBRSxhQUE0QjtJQUNuQyxRQUFRLEVBQUUsZ0JBQWdCO0NBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMQU5HVUFHRVMgfSBmcm9tICdAYWxiaV9zY2FuZG8vYXMtbGFuZ3VhZ2UtbGliL2xpYi9lbnVtcy9sYW5ndWFnZXMuZW51bSc7XHJcblxyXG4vLyBlbnVtc1xyXG5pbXBvcnQgeyBVU0VSX0xFVkVMUyB9IGZyb20gJy4uL2VudW1zL3VzZXItbGV2ZWxzLmVudW0nO1xyXG5cclxuLy8gaW50ZXJmYWNlXHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3VzZXIuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1VTRVJOQU1FOiBzdHJpbmcgPSAnZ3Vlc3QnO1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9MRVZFTDogVVNFUl9MRVZFTFMgPSBVU0VSX0xFVkVMUy5HVUVTVDtcclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFOR1VBR0U6IExBTkdVQUdFUyA9IExBTkdVQUdFUy5FbmdsaXNoTGFuZ3VhZ2VDb2RlO1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRVc2VyOiBVc2VyID0ge1xyXG4gIHVzZXJuYW1lOiBERUZBVUxUX1VTRVJOQU1FLFxyXG4gIGxldmVsOiBERUZBVUxUX0xFVkVMIGFzIFVTRVJfTEVWRUxTLFxyXG4gIGxhbmd1YWdlOiBERUZBVUxUX0xBTkdVQUdFLFxyXG59O1xyXG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcy11c2VyLWxpYi9zcmMvbGliL2ludGVyZmFjZXMvdXNlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVudW1zXHJcbmltcG9ydCB7IExBTkdVQUdFUyB9IGZyb20gJ0BhbGJpX3NjYW5kby9hcy1sYW5ndWFnZS1saWIvbGliL2VudW1zL2xhbmd1YWdlcy5lbnVtJztcclxuaW1wb3J0IHsgVVNFUl9MRVZFTFMgfSBmcm9tICcuLi9lbnVtcy91c2VyLWxldmVscy5lbnVtJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XHJcbiAgdXNlcm5hbWU6IHN0cmluZztcclxuICBsZXZlbDogVVNFUl9MRVZFTFM7XHJcbiAgbGFuZ3VhZ2U6IExBTkdVQUdFUztcclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzLXVzZXItbGliL3NyYy9saWIvc2VydmljZXMvdXNlci91c2VyLnNlcnZpY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vLyBJbnRlcmZhY2VzXHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3VzZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSVVzZXJMaWJTZXR1cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2V0dXAuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBVc2VyIG9iamVjdFxyXG4gICAqL1xyXG4gIHVzZXI6IFVzZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRva2VuIHNpZ25hbFxyXG4gICAqL1xyXG4gIHRva2VuOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgc2VydmljZSBjb25maWd1cmF0aW9uXHJcbiAgICogQHBhcmFtIHtQYXJ0aWFsPElVc2VyTGliU2V0dXA+fSBzZXR1cCBjb25maWd1cmF0aW9uIG9iamVjdFxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPHZvaWQ+fVxyXG4gICAqL1xyXG4gIHNldHVwJChzZXR1cDogUGFydGlhbDxJVXNlckxpYlNldHVwPik6IE9ic2VydmFibGU8dm9pZD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB1c2VyIG9iamVjdCB3aXRoIHByb3ZpZGVkIGRhdGFcclxuICAgKiBAcGFyYW0ge1BhcnRpYWw8VXNlcj59IHVzZXIgcGFydGlhbCB1c2VyIGluZm8gdG8gbW9kaWZ5XHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8dm9pZD59XHJcbiAgICovXHJcbiAgcGF0Y2hVc2VyRGF0YSQodXNlcjogUGFydGlhbDxVc2VyPik6IE9ic2VydmFibGU8dm9pZD47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB1c2VyIGRhdGFcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxVc2VyPn0gdXNlciBkYXRhXHJcbiAgICovXHJcbiAgZ2V0VXNlckRhdGEkKCk6IE9ic2VydmFibGU8VXNlcj47XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHVzZXIgZGF0YSByZXNpZGUgb24gYSBkYiwgZmV0Y2ggaXQgYW5kIHVzZSBpdCB0byBzeW5jaHJvbml6ZSBzZXJ2aWNlIHVzZXIgb2JqZWN0LlxyXG4gICAqIElmIG5vIGRiIGlzIGF2YWlsYWJsZSwgc2V0IGN1cnJlbnQgdXNlciBlcXVhbCB0byBpdHNlbGYuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8dm9pZD59XHJcbiAgICovXHJcbiAgc3luY1VzZXJEYXRhJCgpOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG59XHJcbiJdfQ==
|
|
@@ -1,22 +1,89 @@
|
|
|
1
|
-
import { Injectable, signal } from '@angular/core';
|
|
1
|
+
import { Injectable, inject, signal } from '@angular/core';
|
|
2
|
+
import { iif, 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';
|
|
2
9
|
import * as i0 from "@angular/core";
|
|
3
10
|
/**
|
|
4
11
|
*
|
|
5
12
|
*/
|
|
6
13
|
export class UserService {
|
|
14
|
+
/**
|
|
15
|
+
* Constructor
|
|
16
|
+
* @constructor
|
|
17
|
+
* @ignore
|
|
18
|
+
*/
|
|
7
19
|
constructor() {
|
|
20
|
+
/**
|
|
21
|
+
* {@link IUserService.user}
|
|
22
|
+
*/
|
|
23
|
+
this.user = defaultUser;
|
|
8
24
|
/**
|
|
9
25
|
* {@link IUserService.token}
|
|
10
26
|
*/
|
|
11
|
-
this.token = signal(
|
|
27
|
+
this.token = signal(stringEmpty);
|
|
28
|
+
/**
|
|
29
|
+
* {@link HttpService}
|
|
30
|
+
*/
|
|
31
|
+
this._httpService = inject(HttpService);
|
|
32
|
+
/**
|
|
33
|
+
* PATCH user data api url
|
|
34
|
+
*/
|
|
35
|
+
this._patchUserDataAPIUrl = stringEmpty;
|
|
36
|
+
/**
|
|
37
|
+
* GET user data api url
|
|
38
|
+
*/
|
|
39
|
+
this._getUserDataAPIUrl = stringEmpty;
|
|
40
|
+
this.setup$(defaultUserLibSetup).subscribe();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* {@link IUserService.setup$}
|
|
44
|
+
*/
|
|
45
|
+
setup$(setup) {
|
|
46
|
+
this._patchUserDataAPIUrl = setup.api?.patchUserDataAPIUrl || stringEmpty;
|
|
47
|
+
this._getUserDataAPIUrl = setup.api?.getUserDataAPIUrl || stringEmpty;
|
|
48
|
+
return observableEmpty$;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* {@link IUserService.patchUserData$}
|
|
52
|
+
*/
|
|
53
|
+
patchUserData$(user) {
|
|
54
|
+
const httpRequest = {
|
|
55
|
+
url: this._patchUserDataAPIUrl,
|
|
56
|
+
body: user,
|
|
57
|
+
};
|
|
58
|
+
const updateUserData$ = this._httpService.patch(httpRequest);
|
|
59
|
+
return iif(() => httpRequest.url === stringEmpty, of(() => (this.user = { ...this.user, ...user })), updateUserData$).pipe(() => this.syncUserData$());
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* {@link IUserService.getUserData$}
|
|
63
|
+
*/
|
|
64
|
+
getUserData$() {
|
|
65
|
+
const httpRequest = {
|
|
66
|
+
url: this._getUserDataAPIUrl,
|
|
67
|
+
};
|
|
68
|
+
const getUserData$ = this._httpService.get(httpRequest);
|
|
69
|
+
return iif(() => httpRequest.url === stringEmpty, of(this.user), getUserData$);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* {@link IUserService.syncUserData$}
|
|
73
|
+
*/
|
|
74
|
+
syncUserData$() {
|
|
75
|
+
return this.getUserData$().pipe(switchMap((user) => {
|
|
76
|
+
this.user = user;
|
|
77
|
+
return observableEmpty$;
|
|
78
|
+
}));
|
|
12
79
|
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
14
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
81
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
15
82
|
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, decorators: [{
|
|
17
84
|
type: Injectable,
|
|
18
85
|
args: [{
|
|
19
86
|
providedIn: 'root',
|
|
20
87
|
}]
|
|
21
|
-
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
}], ctorParameters: () => [] });
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXMtdXNlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy91c2VyL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFrQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsU0FBUztBQUNULE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxZQUFZO0FBQ1osT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQVc5RTs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBMEJ0Qjs7OztPQUlHO0lBQ0g7UUE5QkE7O1dBRUc7UUFDSSxTQUFJLEdBQVMsV0FBVyxDQUFDO1FBRWhDOztXQUVHO1FBQ0ksVUFBSyxHQUEyQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFM0Q7O1dBRUc7UUFDSyxpQkFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFeEQ7O1dBRUc7UUFDSyx5QkFBb0IsR0FBVyxXQUFXLENBQUM7UUFFbkQ7O1dBRUc7UUFDSyx1QkFBa0IsR0FBVyxXQUFXLENBQUM7UUFRL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxLQUE2QjtRQUN6QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsSUFBSSxXQUFXLENBQUM7UUFDMUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLElBQUksV0FBVyxDQUFDO1FBRXRFLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYyxDQUFDLElBQW1CO1FBQ3ZDLE1BQU0sV0FBVyxHQUFVO1lBQ3pCLEdBQUcsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQzlCLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUNGLE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxPQUFPLEdBQUcsQ0FDUixHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFDckMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsRUFDakQsZUFBZSxDQUNoQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZO1FBQ2pCLE1BQU0sV0FBVyxHQUFRO1lBQ3ZCLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1NBQzdCLENBQUM7UUFDRixNQUFNLFlBQVksR0FBcUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUUsT0FBTyxHQUFHLENBQ1IsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQ3JDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ2IsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDN0IsU0FBUyxDQUFDLENBQUMsSUFBVSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0F2RlUsV0FBVztrSEFBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBXcml0YWJsZVNpZ25hbCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgaWlmLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJ0BhbGJpX3NjYW5kby9hcy1odHRwLWxpYic7XHJcblxyXG4vLyBBc3NldHNcclxuaW1wb3J0IHsgZGVmYXVsdFVzZXJMaWJTZXR1cCB9IGZyb20gJy4uLy4uL2RlZmF1bHQvZGVmYXVsdCc7XHJcbmltcG9ydCB7IGRlZmF1bHRVc2VyIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC9kZWZhdWx0LXVzZXInO1xyXG5cclxuLy8gQ29uc3RhbnRzXHJcbmltcG9ydCB7IG9ic2VydmFibGVFbXB0eSQsIHN0cmluZ0VtcHR5IH0gZnJvbSAnQGFsYmlfc2NhbmRvL2FzLWNvbnN0YW50cy1saWInO1xyXG5cclxuLy8gRW51bXNcclxuXHJcbi8vIEludGVyZmFjZXNcclxuaW1wb3J0IHsgUGF0Y2ggfSBmcm9tICdAYWxiaV9zY2FuZG8vYXMtaHR0cC1saWIvbGliL21vZGVscy9wYXRjaCc7XHJcbmltcG9ydCB7IEdldCB9IGZyb20gJ0BhbGJpX3NjYW5kby9hcy1odHRwLWxpYi9saWIvbW9kZWxzL2dldCc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3VzZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSVVzZXJMaWJTZXR1cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2V0dXAuaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJTZXJ2aWNlIGltcGxlbWVudHMgSVVzZXJTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiB7QGxpbmsgSVVzZXJTZXJ2aWNlLnVzZXJ9XHJcbiAgICovXHJcbiAgcHVibGljIHVzZXI6IFVzZXIgPSBkZWZhdWx0VXNlcjtcclxuXHJcbiAgLyoqXHJcbiAgICoge0BsaW5rIElVc2VyU2VydmljZS50b2tlbn1cclxuICAgKi9cclxuICBwdWJsaWMgdG9rZW46IFdyaXRhYmxlU2lnbmFsPHN0cmluZz4gPSBzaWduYWwoc3RyaW5nRW1wdHkpO1xyXG5cclxuICAvKipcclxuICAgKiB7QGxpbmsgSHR0cFNlcnZpY2V9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlID0gaW5qZWN0KEh0dHBTZXJ2aWNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUEFUQ0ggdXNlciBkYXRhIGFwaSB1cmxcclxuICAgKi9cclxuICBwcml2YXRlIF9wYXRjaFVzZXJEYXRhQVBJVXJsOiBzdHJpbmcgPSBzdHJpbmdFbXB0eTtcclxuXHJcbiAgLyoqXHJcbiAgICogR0VUIHVzZXIgZGF0YSBhcGkgdXJsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZ2V0VXNlckRhdGFBUElVcmw6IHN0cmluZyA9IHN0cmluZ0VtcHR5O1xyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RvclxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2V0dXAkKGRlZmF1bHRVc2VyTGliU2V0dXApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICoge0BsaW5rIElVc2VyU2VydmljZS5zZXR1cCR9XHJcbiAgICovXHJcbiAgcHVibGljIHNldHVwJChzZXR1cDogUGFydGlhbDxJVXNlckxpYlNldHVwPik6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgdGhpcy5fcGF0Y2hVc2VyRGF0YUFQSVVybCA9IHNldHVwLmFwaT8ucGF0Y2hVc2VyRGF0YUFQSVVybCB8fCBzdHJpbmdFbXB0eTtcclxuICAgIHRoaXMuX2dldFVzZXJEYXRhQVBJVXJsID0gc2V0dXAuYXBpPy5nZXRVc2VyRGF0YUFQSVVybCB8fCBzdHJpbmdFbXB0eTtcclxuXHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUVtcHR5JDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHtAbGluayBJVXNlclNlcnZpY2UucGF0Y2hVc2VyRGF0YSR9XHJcbiAgICovXHJcbiAgcHVibGljIHBhdGNoVXNlckRhdGEkKHVzZXI6IFBhcnRpYWw8VXNlcj4pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGh0dHBSZXF1ZXN0OiBQYXRjaCA9IHtcclxuICAgICAgdXJsOiB0aGlzLl9wYXRjaFVzZXJEYXRhQVBJVXJsLFxyXG4gICAgICBib2R5OiB1c2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHVwZGF0ZVVzZXJEYXRhJDogT2JzZXJ2YWJsZTx2b2lkPiA9XHJcbiAgICAgIHRoaXMuX2h0dHBTZXJ2aWNlLnBhdGNoKGh0dHBSZXF1ZXN0KTtcclxuICAgIHJldHVybiBpaWYoXHJcbiAgICAgICgpID0+IGh0dHBSZXF1ZXN0LnVybCA9PT0gc3RyaW5nRW1wdHksXHJcbiAgICAgIG9mKCgpID0+ICh0aGlzLnVzZXIgPSB7IC4uLnRoaXMudXNlciwgLi4udXNlciB9KSksXHJcbiAgICAgIHVwZGF0ZVVzZXJEYXRhJFxyXG4gICAgKS5waXBlKCgpID0+IHRoaXMuc3luY1VzZXJEYXRhJCgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHtAbGluayBJVXNlclNlcnZpY2UuZ2V0VXNlckRhdGEkfVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRVc2VyRGF0YSQoKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICBjb25zdCBodHRwUmVxdWVzdDogR2V0ID0ge1xyXG4gICAgICB1cmw6IHRoaXMuX2dldFVzZXJEYXRhQVBJVXJsLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGdldFVzZXJEYXRhJDogT2JzZXJ2YWJsZTxVc2VyPiA9IHRoaXMuX2h0dHBTZXJ2aWNlLmdldChodHRwUmVxdWVzdCk7XHJcbiAgICByZXR1cm4gaWlmKFxyXG4gICAgICAoKSA9PiBodHRwUmVxdWVzdC51cmwgPT09IHN0cmluZ0VtcHR5LFxyXG4gICAgICBvZih0aGlzLnVzZXIpLFxyXG4gICAgICBnZXRVc2VyRGF0YSRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB7QGxpbmsgSVVzZXJTZXJ2aWNlLnN5bmNVc2VyRGF0YSR9XHJcbiAgICovXHJcbiAgcHVibGljIHN5bmNVc2VyRGF0YSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyRGF0YSQoKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHVzZXI6IFVzZXIpID0+IHtcclxuICAgICAgICB0aGlzLnVzZXIgPSB1c2VyO1xyXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlRW1wdHkkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,25 +1,105 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, Injectable } from '@angular/core';
|
|
2
|
+
import { signal, inject, Injectable } from '@angular/core';
|
|
3
|
+
import { iif, of, switchMap } from 'rxjs';
|
|
4
|
+
import { HttpService } from '@albi_scando/as-http-lib';
|
|
5
|
+
import { stringEmpty, observableEmpty$ } from '@albi_scando/as-constants-lib';
|
|
6
|
+
import { LANGUAGES } from '@albi_scando/as-language-lib/lib/enums/languages.enum';
|
|
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 DEFAULT_LANGUAGE = LANGUAGES.EnglishLanguageCode;
|
|
18
|
+
const defaultUser = {
|
|
19
|
+
username: DEFAULT_USERNAME,
|
|
20
|
+
level: DEFAULT_LEVEL,
|
|
21
|
+
language: DEFAULT_LANGUAGE,
|
|
22
|
+
};
|
|
3
23
|
|
|
4
24
|
/**
|
|
5
25
|
*
|
|
6
26
|
*/
|
|
7
27
|
class UserService {
|
|
28
|
+
/**
|
|
29
|
+
* Constructor
|
|
30
|
+
* @constructor
|
|
31
|
+
* @ignore
|
|
32
|
+
*/
|
|
8
33
|
constructor() {
|
|
34
|
+
/**
|
|
35
|
+
* {@link IUserService.user}
|
|
36
|
+
*/
|
|
37
|
+
this.user = defaultUser;
|
|
9
38
|
/**
|
|
10
39
|
* {@link IUserService.token}
|
|
11
40
|
*/
|
|
12
|
-
this.token = signal(
|
|
41
|
+
this.token = signal(stringEmpty);
|
|
42
|
+
/**
|
|
43
|
+
* {@link HttpService}
|
|
44
|
+
*/
|
|
45
|
+
this._httpService = inject(HttpService);
|
|
46
|
+
/**
|
|
47
|
+
* PATCH user data api url
|
|
48
|
+
*/
|
|
49
|
+
this._patchUserDataAPIUrl = stringEmpty;
|
|
50
|
+
/**
|
|
51
|
+
* GET user data api url
|
|
52
|
+
*/
|
|
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 iif(() => httpRequest.url === stringEmpty, of(() => (this.user = { ...this.user, ...user })), updateUserData$).pipe(() => this.syncUserData$());
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* {@link IUserService.getUserData$}
|
|
77
|
+
*/
|
|
78
|
+
getUserData$() {
|
|
79
|
+
const httpRequest = {
|
|
80
|
+
url: this._getUserDataAPIUrl,
|
|
81
|
+
};
|
|
82
|
+
const getUserData$ = this._httpService.get(httpRequest);
|
|
83
|
+
return iif(() => httpRequest.url === stringEmpty, of(this.user), getUserData$);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* {@link IUserService.syncUserData$}
|
|
87
|
+
*/
|
|
88
|
+
syncUserData$() {
|
|
89
|
+
return this.getUserData$().pipe(switchMap((user) => {
|
|
90
|
+
this.user = user;
|
|
91
|
+
return observableEmpty$;
|
|
92
|
+
}));
|
|
13
93
|
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
15
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
94
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
95
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
16
96
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UserService, decorators: [{
|
|
18
98
|
type: Injectable,
|
|
19
99
|
args: [{
|
|
20
100
|
providedIn: 'root',
|
|
21
101
|
}]
|
|
22
|
-
}] });
|
|
102
|
+
}], ctorParameters: () => [] });
|
|
23
103
|
|
|
24
104
|
/*
|
|
25
105
|
* 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 { 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(
|
|
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","import { LANGUAGES } from '@albi_scando/as-language-lib/lib/enums/languages.enum';\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\nexport const DEFAULT_LANGUAGE: LANGUAGES = LANGUAGES.EnglishLanguageCode;\r\n\r\nexport const defaultUser: User = {\r\n username: DEFAULT_USERNAME,\r\n level: DEFAULT_LEVEL as USER_LEVELS,\r\n language: DEFAULT_LANGUAGE,\r\n};\r\n","import { Injectable, WritableSignal, inject, signal } from '@angular/core';\r\nimport { Observable, iif, 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\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 IUserService.token}\r\n */\r\n public token: WritableSignal<string> = signal(stringEmpty);\r\n\r\n /**\r\n * {@link HttpService}\r\n */\r\n private _httpService: HttpService = inject(HttpService);\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 iif(\r\n () => httpRequest.url === stringEmpty,\r\n of(() => (this.user = { ...this.user, ...user })),\r\n updateUserData$\r\n ).pipe(() => this.syncUserData$());\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 iif(\r\n () => httpRequest.url === stringEmpty,\r\n of(this.user),\r\n getUserData$\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 return observableEmpty$;\r\n })\r\n );\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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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LANGUAGES } from '@albi_scando/as-language-lib/lib/enums/languages.enum';
|
|
2
|
+
import { USER_LEVELS } from '../enums/user-levels.enum';
|
|
3
|
+
import { User } from '../interfaces/user.interface';
|
|
4
|
+
export declare const DEFAULT_USERNAME: string;
|
|
5
|
+
export declare const DEFAULT_LEVEL: USER_LEVELS;
|
|
6
|
+
export declare const DEFAULT_LANGUAGE: LANGUAGES;
|
|
7
|
+
export declare const defaultUser: User;
|
|
@@ -1,14 +1,55 @@
|
|
|
1
1
|
import { WritableSignal } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { User } from '../../interfaces/user.interface';
|
|
2
4
|
import { IUserService } from './user.service.interface';
|
|
5
|
+
import { IUserLibSetup } from '../../interfaces/setup.interface';
|
|
3
6
|
import * as i0 from "@angular/core";
|
|
4
7
|
/**
|
|
5
8
|
*
|
|
6
9
|
*/
|
|
7
10
|
export declare class UserService implements IUserService {
|
|
11
|
+
/**
|
|
12
|
+
* {@link IUserService.user}
|
|
13
|
+
*/
|
|
14
|
+
user: User;
|
|
8
15
|
/**
|
|
9
16
|
* {@link IUserService.token}
|
|
10
17
|
*/
|
|
11
18
|
token: WritableSignal<string>;
|
|
19
|
+
/**
|
|
20
|
+
* {@link HttpService}
|
|
21
|
+
*/
|
|
22
|
+
private _httpService;
|
|
23
|
+
/**
|
|
24
|
+
* PATCH user data api url
|
|
25
|
+
*/
|
|
26
|
+
private _patchUserDataAPIUrl;
|
|
27
|
+
/**
|
|
28
|
+
* GET user data api url
|
|
29
|
+
*/
|
|
30
|
+
private _getUserDataAPIUrl;
|
|
31
|
+
/**
|
|
32
|
+
* Constructor
|
|
33
|
+
* @constructor
|
|
34
|
+
* @ignore
|
|
35
|
+
*/
|
|
36
|
+
constructor();
|
|
37
|
+
/**
|
|
38
|
+
* {@link IUserService.setup$}
|
|
39
|
+
*/
|
|
40
|
+
setup$(setup: Partial<IUserLibSetup>): Observable<void>;
|
|
41
|
+
/**
|
|
42
|
+
* {@link IUserService.patchUserData$}
|
|
43
|
+
*/
|
|
44
|
+
patchUserData$(user: Partial<User>): Observable<void>;
|
|
45
|
+
/**
|
|
46
|
+
* {@link IUserService.getUserData$}
|
|
47
|
+
*/
|
|
48
|
+
getUserData$(): Observable<User>;
|
|
49
|
+
/**
|
|
50
|
+
* {@link IUserService.syncUserData$}
|
|
51
|
+
*/
|
|
52
|
+
syncUserData$(): Observable<void>;
|
|
12
53
|
static ɵfac: i0.ɵɵFactoryDeclaration<UserService, never>;
|
|
13
54
|
static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
|
|
14
55
|
}
|
|
@@ -1,7 +1,37 @@
|
|
|
1
1
|
import { WritableSignal } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { User } from '../../interfaces/user.interface';
|
|
4
|
+
import { IUserLibSetup } from '../../interfaces/setup.interface';
|
|
2
5
|
export interface IUserService {
|
|
6
|
+
/**
|
|
7
|
+
* User object
|
|
8
|
+
*/
|
|
9
|
+
user: User;
|
|
3
10
|
/**
|
|
4
11
|
* Token signal
|
|
5
12
|
*/
|
|
6
13
|
token: WritableSignal<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Set service configuration
|
|
16
|
+
* @param {Partial<IUserLibSetup>} setup configuration object
|
|
17
|
+
* @returns {Observable<void>}
|
|
18
|
+
*/
|
|
19
|
+
setup$(setup: Partial<IUserLibSetup>): Observable<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Update user object with provided data
|
|
22
|
+
* @param {Partial<User>} user partial user info to modify
|
|
23
|
+
* @returns {Observable<void>}
|
|
24
|
+
*/
|
|
25
|
+
patchUserData$(user: Partial<User>): Observable<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Get user data
|
|
28
|
+
* @returns {Observable<User>} user data
|
|
29
|
+
*/
|
|
30
|
+
getUserData$(): Observable<User>;
|
|
31
|
+
/**
|
|
32
|
+
* If user data reside on a db, fetch it and use it to synchronize service user object.
|
|
33
|
+
* If no db is available, set current user equal to itself.
|
|
34
|
+
* @returns {Observable<void>}
|
|
35
|
+
*/
|
|
36
|
+
syncUserData$(): Observable<void>;
|
|
7
37
|
}
|
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;;;;"}
|