@haloduck/core 2.0.9 → 2.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -6
- package/fesm2022/haloduck-core.mjs +33 -42
- package/fesm2022/haloduck-core.mjs.map +1 -1
- package/haloduck-core-2.0.11.tgz +0 -0
- package/index.d.ts +18 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,18 +9,24 @@ npm install @haloduck/core
|
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## Post Installation
|
|
12
|
+
|
|
12
13
|
### Copy scripts
|
|
14
|
+
|
|
13
15
|
Copy script files to `scripts` folder in the root folder.
|
|
16
|
+
|
|
14
17
|
```bash
|
|
15
18
|
npx haloduck-copy-scripts
|
|
16
19
|
```
|
|
20
|
+
|
|
17
21
|
### Update `package.json`
|
|
22
|
+
|
|
18
23
|
```bash
|
|
19
24
|
"scripts": {
|
|
20
25
|
...
|
|
21
26
|
"prebuild": "ts-node scripts/generate-build-timestamp.ts"
|
|
22
27
|
}
|
|
23
28
|
```
|
|
29
|
+
|
|
24
30
|
## Key Features
|
|
25
31
|
|
|
26
32
|
- **Authentication Service**: AWS Amplify-based authentication management
|
|
@@ -45,9 +51,7 @@ Amplify.configure({
|
|
|
45
51
|
export const appConfig: ApplicationConfig = {
|
|
46
52
|
providers: [
|
|
47
53
|
// ...
|
|
48
|
-
provideHttpClient(
|
|
49
|
-
withInterceptors([idTokenInterceptor, dummyMemberIdInterceptor]),
|
|
50
|
-
),
|
|
54
|
+
provideHttpClient(withInterceptors([idTokenInterceptor, dummyMemberIdInterceptor])),
|
|
51
55
|
// ...
|
|
52
56
|
provideStore({
|
|
53
57
|
global: globalReducer,
|
|
@@ -60,7 +64,7 @@ export const appConfig: ApplicationConfig = {
|
|
|
60
64
|
syntax: false,
|
|
61
65
|
},
|
|
62
66
|
}),
|
|
63
|
-
// ...
|
|
67
|
+
// ...
|
|
64
68
|
provideServiceWorker('ngsw-worker.js', {
|
|
65
69
|
enabled: environment.usePwa,
|
|
66
70
|
registrationStrategy: 'registerWhenStable:30000',
|
|
@@ -97,7 +101,6 @@ export const appConfig: ApplicationConfig = {
|
|
|
97
101
|
/// ...
|
|
98
102
|
],
|
|
99
103
|
};
|
|
100
|
-
|
|
101
104
|
```
|
|
102
105
|
|
|
103
106
|
## Dependencies
|
|
@@ -113,4 +116,5 @@ MIT License
|
|
|
113
116
|
|
|
114
117
|
## Support
|
|
115
118
|
|
|
116
|
-
If you have any issues or questions, please register them in
|
|
119
|
+
If you have any issues or questions, please register them in
|
|
120
|
+
[GitHub Issues](https://github.com/haloduck/haloduck-frontend/issues)
|
|
@@ -74,15 +74,11 @@ var GlobalSelectors;
|
|
|
74
74
|
let [_resource, _conditionsRaw] = resource.split(':');
|
|
75
75
|
const _conditions = _conditionsRaw ? _conditionsRaw.split('|') : [];
|
|
76
76
|
_resource =
|
|
77
|
-
shouldStripTag && _resource.includes('/')
|
|
78
|
-
? _resource.split('/')[0]
|
|
79
|
-
: _resource;
|
|
77
|
+
shouldStripTag && _resource.includes('/') ? _resource.split('/')[0] : _resource;
|
|
80
78
|
const _resourceAclArray = acl[aclKey][_action];
|
|
81
79
|
return _resourceAclArray.some((_resourceAclRaw) => {
|
|
82
80
|
const [_resourceAcl, _conditionsAclRaw] = _resourceAclRaw.split(':');
|
|
83
|
-
const _conditionsAcl = _conditionsAclRaw
|
|
84
|
-
? _conditionsAclRaw.split('|')
|
|
85
|
-
: [];
|
|
81
|
+
const _conditionsAcl = _conditionsAclRaw ? _conditionsAclRaw.split('|') : [];
|
|
86
82
|
if (_resourceAcl === '*') {
|
|
87
83
|
return true;
|
|
88
84
|
}
|
|
@@ -112,8 +108,7 @@ const groupIdInterceptor = (req, next) => {
|
|
|
112
108
|
return next(req);
|
|
113
109
|
if (req.url.endsWith('/acl'))
|
|
114
110
|
return next(req);
|
|
115
|
-
if (req.url.startsWith('https://api') ||
|
|
116
|
-
req.url.startsWith('http://localhost')) {
|
|
111
|
+
if (req.url.startsWith('https://api') || req.url.startsWith('http://localhost')) {
|
|
117
112
|
return groupId$.pipe(switchMap((groupId) => {
|
|
118
113
|
if (groupId) {
|
|
119
114
|
const clonedRequest = req.clone({
|
|
@@ -196,8 +191,7 @@ class DisplayNamePipe {
|
|
|
196
191
|
transform(member) {
|
|
197
192
|
if (!member)
|
|
198
193
|
return '';
|
|
199
|
-
return
|
|
200
|
-
(member.firstName || '') + ' ' + (member.lastName || ''));
|
|
194
|
+
return member.nickname?.trim() || member.fullName || '' || (member.email || '').split('@')[0];
|
|
201
195
|
}
|
|
202
196
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DisplayNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
203
197
|
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: DisplayNamePipe, isStandalone: true, name: "displayName" });
|
|
@@ -254,10 +248,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
254
248
|
}] });
|
|
255
249
|
|
|
256
250
|
const defaultLanguage = { id: 'en', value: 'English' };
|
|
257
|
-
const supportedLanguages = [
|
|
258
|
-
defaultLanguage,
|
|
259
|
-
{ id: 'ko', value: '한국어' },
|
|
260
|
-
];
|
|
251
|
+
const supportedLanguages = [defaultLanguage, { id: 'ko', value: '한국어' }];
|
|
261
252
|
const HALODUCK_CORE_CONFIG = new InjectionToken('HALODUCK_CORE_CONFIG', {
|
|
262
253
|
providedIn: 'root',
|
|
263
254
|
factory: () => ({
|
|
@@ -275,7 +266,7 @@ const HALODUCK_CORE_CONFIG = new InjectionToken('HALODUCK_CORE_CONFIG', {
|
|
|
275
266
|
googleApiKey: 'please-register-google-api-key-via-provideHaloduckCoreConfig',
|
|
276
267
|
defaultLngLat: {
|
|
277
268
|
lat: 37.575971,
|
|
278
|
-
lng: 126.
|
|
269
|
+
lng: 126.9768,
|
|
279
270
|
},
|
|
280
271
|
},
|
|
281
272
|
}),
|
|
@@ -434,9 +425,7 @@ class GlobalApiService {
|
|
|
434
425
|
return this.http.get(`${this.apiUrl}/acl`).pipe(map((response) => responseHandler(response)), catchError((error) => errorHandler(error)));
|
|
435
426
|
}
|
|
436
427
|
getListMenuItem() {
|
|
437
|
-
return this.http
|
|
438
|
-
.get(`${this.apiUrl}/menu`)
|
|
439
|
-
.pipe(map((response) => responseHandler(response)), catchError((error) => errorHandler(error)));
|
|
428
|
+
return this.http.get(`${this.apiUrl}/menu`).pipe(map((response) => responseHandler(response)), catchError((error) => errorHandler(error)));
|
|
440
429
|
}
|
|
441
430
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: GlobalApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
442
431
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: GlobalApiService, providedIn: 'root' });
|
|
@@ -467,9 +456,7 @@ class MemberApiService extends BaseEntityApiService {
|
|
|
467
456
|
return 'member';
|
|
468
457
|
}
|
|
469
458
|
getProfile() {
|
|
470
|
-
return this.http
|
|
471
|
-
.get(`${this.apiUrl}/${this.getEntityName()}/me`)
|
|
472
|
-
.pipe(map$1((response) => responseHandler(response)), catchError$1((error) => errorHandler(error)));
|
|
459
|
+
return this.http.get(`${this.apiUrl}/${this.getEntityName()}/me`).pipe(map$1((response) => responseHandler(response)), catchError$1((error) => errorHandler(error)));
|
|
473
460
|
}
|
|
474
461
|
checkMemberByEmail(email) {
|
|
475
462
|
return this.http
|
|
@@ -539,15 +526,10 @@ class TableStore extends ComponentStore {
|
|
|
539
526
|
// effects
|
|
540
527
|
loadListEntity = this.effect((trigger$) => trigger$.pipe(withLatestFrom(this.listEntity$, this.filter$, this.sort$, this.page$, this.parent$), switchMap(([, listEntity, filter, sort, page, parent]) => {
|
|
541
528
|
this.updateStatus(ITableStateStatusLoading);
|
|
542
|
-
return this.apiService
|
|
543
|
-
.getListEntity({ filter, sort, page }, parent)
|
|
544
|
-
.pipe(tap((response) => {
|
|
529
|
+
return this.apiService.getListEntity({ filter, sort, page }, parent).pipe(tap((response) => {
|
|
545
530
|
this.patchState({
|
|
546
|
-
listEntity: [
|
|
547
|
-
|
|
548
|
-
...(response.data ? response.data : []),
|
|
549
|
-
],
|
|
550
|
-
totalCount: listEntity.length === 0 ? response.total : (this.get()?.totalCount),
|
|
531
|
+
listEntity: [...listEntity, ...(response.data ? response.data : [])],
|
|
532
|
+
totalCount: listEntity.length === 0 ? response.total : this.get()?.totalCount,
|
|
551
533
|
currentCount: listEntity.length + (response.data ? response.data.length : 0),
|
|
552
534
|
lastEvaluatedKey: response.lastEvaluatedKey,
|
|
553
535
|
});
|
|
@@ -594,10 +576,7 @@ class TableStore extends ComponentStore {
|
|
|
594
576
|
}
|
|
595
577
|
return updatedListEntity;
|
|
596
578
|
}
|
|
597
|
-
return [
|
|
598
|
-
...(response.data ? [response.data] : []),
|
|
599
|
-
...listEntity,
|
|
600
|
-
];
|
|
579
|
+
return [...(response.data ? [response.data] : []), ...listEntity];
|
|
601
580
|
})(),
|
|
602
581
|
});
|
|
603
582
|
this.updateStatus(ITableStateStatusCreated);
|
|
@@ -617,7 +596,9 @@ class TableStore extends ComponentStore {
|
|
|
617
596
|
return {
|
|
618
597
|
...entity,
|
|
619
598
|
children: [
|
|
620
|
-
...(entity.children
|
|
599
|
+
...(entity.children
|
|
600
|
+
? [response.data, ...entity.children]
|
|
601
|
+
: [response.data]),
|
|
621
602
|
],
|
|
622
603
|
};
|
|
623
604
|
}
|
|
@@ -631,7 +612,9 @@ class TableStore extends ComponentStore {
|
|
|
631
612
|
? {
|
|
632
613
|
...child,
|
|
633
614
|
children: [
|
|
634
|
-
...(child.children
|
|
615
|
+
...(child.children
|
|
616
|
+
? [response.data, ...child.children]
|
|
617
|
+
: [response.data]),
|
|
635
618
|
],
|
|
636
619
|
}
|
|
637
620
|
: child),
|
|
@@ -639,7 +622,7 @@ class TableStore extends ComponentStore {
|
|
|
639
622
|
}
|
|
640
623
|
return updatedListEntity;
|
|
641
624
|
}
|
|
642
|
-
return listEntity.map((e) => e.id === response.data.id ? response.data : e);
|
|
625
|
+
return listEntity.map((e) => (e.id === response.data.id ? response.data : e));
|
|
643
626
|
})(),
|
|
644
627
|
});
|
|
645
628
|
this.updateStatus(ITableStateStatusLoaded);
|
|
@@ -670,16 +653,14 @@ class TableStore extends ComponentStore {
|
|
|
670
653
|
children: entity.children?.map((child) => child.id === response.data.parentId
|
|
671
654
|
? {
|
|
672
655
|
...child,
|
|
673
|
-
children: child.children?.map((grandChild) => grandChild.id === response.data.id
|
|
674
|
-
? response.data
|
|
675
|
-
: grandChild),
|
|
656
|
+
children: child.children?.map((grandChild) => grandChild.id === response.data.id ? response.data : grandChild),
|
|
676
657
|
}
|
|
677
658
|
: child),
|
|
678
659
|
}));
|
|
679
660
|
}
|
|
680
661
|
return updatedListEntity;
|
|
681
662
|
}
|
|
682
|
-
return listEntity.map((e) => e.id === response.data.id ? response.data : e);
|
|
663
|
+
return listEntity.map((e) => (e.id === response.data.id ? response.data : e));
|
|
683
664
|
})(),
|
|
684
665
|
});
|
|
685
666
|
this.updateStatus(ITableStateStatusUpdated);
|
|
@@ -873,17 +854,27 @@ var Device;
|
|
|
873
854
|
Device.DeviceStore = DeviceStore;
|
|
874
855
|
})(Device || (Device = {}));
|
|
875
856
|
|
|
857
|
+
// Injection token for GlobalEffects options
|
|
858
|
+
const GLOBAL_EFFECTS_OPTIONS = new InjectionToken('GLOBAL_EFFECTS_OPTIONS');
|
|
859
|
+
// Provider function for easier configuration in ApplicationConfig
|
|
860
|
+
function provideGlobalEffectsOptions(options) {
|
|
861
|
+
return {
|
|
862
|
+
provide: GLOBAL_EFFECTS_OPTIONS,
|
|
863
|
+
useValue: options,
|
|
864
|
+
};
|
|
865
|
+
}
|
|
876
866
|
class GlobalEffects {
|
|
877
867
|
actions$ = inject(Actions);
|
|
878
868
|
memberApiService = inject(MemberApiService);
|
|
879
869
|
globalApiService = inject(GlobalApiService);
|
|
880
870
|
groupApiService = inject(GroupApiService);
|
|
881
871
|
store = inject((Store));
|
|
872
|
+
options = inject(GLOBAL_EFFECTS_OPTIONS, { optional: true });
|
|
882
873
|
setAuthenticated$ = createEffect(() => this.actions$.pipe(ofType(GlobalActions.setAuthenticated), withLatestFrom$1(this.store.select(GlobalSelectors.selectIsAuthenticated)), mergeMap(([action, isAuthenticated]) => {
|
|
883
874
|
if (isAuthenticated) {
|
|
884
875
|
this.store.dispatch(GlobalActions.increaseLoadingReference());
|
|
885
876
|
return forkJoin({
|
|
886
|
-
profile: this.memberApiService.getProfile(),
|
|
877
|
+
profile: this.options?.getProfile?.() || this.memberApiService.getProfile(),
|
|
887
878
|
acl: this.globalApiService.getAcl(),
|
|
888
879
|
listMenuItem: this.globalApiService.getListMenuItem(),
|
|
889
880
|
}).pipe(mergeMap(({ profile, acl, listMenuItem }) => {
|
|
@@ -965,5 +956,5 @@ const globalReducer = createReducer(initialState, on(GlobalActions.markInitiated
|
|
|
965
956
|
* Generated bundle index. Do not edit.
|
|
966
957
|
*/
|
|
967
958
|
|
|
968
|
-
export { AuthService, BaseEntityApiService, CdnApiService, CoreService, Device, DeviceApiService, DisplayNamePipe, GlobalActions, GlobalApiService, GlobalEffects, GlobalSelectors, GroupApiService, GroupStore, HALODUCK_CORE_CONFIG, ITableStateStatusCreated, ITableStateStatusCreating, ITableStateStatusDeleted, ITableStateStatusDeleting, ITableStateStatusFailedToCreate, ITableStateStatusFailedToDelete, ITableStateStatusFailedToLoad, ITableStateStatusFailedToUpdate, ITableStateStatusLoaded, ITableStateStatusLoading, ITableStateStatusUpdated, ITableStateStatusUpdating, MemberApiService, MemberStore, SearchParams, TableStore, authGuard, defaultLanguage, dummyMemberIdInterceptor, errorHandler, globalReducer, groupIdInterceptor, idTokenInterceptor, initialState, provideHaloduckCoreConfig, responseHandler, supportedLanguages };
|
|
959
|
+
export { AuthService, BaseEntityApiService, CdnApiService, CoreService, Device, DeviceApiService, DisplayNamePipe, GLOBAL_EFFECTS_OPTIONS, GlobalActions, GlobalApiService, GlobalEffects, GlobalSelectors, GroupApiService, GroupStore, HALODUCK_CORE_CONFIG, ITableStateStatusCreated, ITableStateStatusCreating, ITableStateStatusDeleted, ITableStateStatusDeleting, ITableStateStatusFailedToCreate, ITableStateStatusFailedToDelete, ITableStateStatusFailedToLoad, ITableStateStatusFailedToUpdate, ITableStateStatusLoaded, ITableStateStatusLoading, ITableStateStatusUpdated, ITableStateStatusUpdating, MemberApiService, MemberStore, SearchParams, TableStore, authGuard, defaultLanguage, dummyMemberIdInterceptor, errorHandler, globalReducer, groupIdInterceptor, idTokenInterceptor, initialState, provideGlobalEffectsOptions, provideHaloduckCoreConfig, responseHandler, supportedLanguages };
|
|
969
960
|
//# sourceMappingURL=haloduck-core.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"haloduck-core.mjs","sources":["../../../../projects/haloduck/core/src/lib/guard/auth.guard.ts","../../../../projects/haloduck/core/src/lib/interceptor/dummy-member-id.interceptor.ts","../../../../projects/haloduck/core/src/lib/store/global/global.selectors.ts","../../../../projects/haloduck/core/src/lib/interceptor/group-id.interceptor.ts","../../../../projects/haloduck/core/src/lib/interceptor/id-token.interceptor.ts","../../../../projects/haloduck/core/src/lib/model/api-param.model.ts","../../../../projects/haloduck/core/src/lib/model/api-response.model.ts","../../../../projects/haloduck/core/src/lib/pipe/display-name.pipe.ts","../../../../projects/haloduck/core/src/lib/store/global/global.actions.ts","../../../../projects/haloduck/core/src/lib/service/auth.service.ts","../../../../projects/haloduck/core/src/lib/provider/config.provider.ts","../../../../projects/haloduck/core/src/lib/service/base-entity-api.service.ts","../../../../projects/haloduck/core/src/lib/service/cdn.service.ts","../../../../projects/haloduck/core/src/lib/service/global-api.service.ts","../../../../projects/haloduck/core/src/lib/service/group-api.service.ts","../../../../projects/haloduck/core/src/lib/service/member-api.service.ts","../../../../projects/haloduck/core/src/lib/service/device-api.service.ts","../../../../projects/haloduck/core/src/lib/store/component/table.store.ts","../../../../projects/haloduck/core/src/lib/store/component/group.store.ts","../../../../projects/haloduck/core/src/lib/store/component/member.store.ts","../../../../projects/haloduck/core/src/lib/store/component/device.store.ts","../../../../projects/haloduck/core/src/lib/store/global/global.effects.ts","../../../../projects/haloduck/core/src/lib/store/global/global.state.ts","../../../../projects/haloduck/core/src/lib/store/global/global.reducer.ts","../../../../projects/haloduck/core/src/public-api.ts","../../../../projects/haloduck/core/src/haloduck-core.ts"],"sourcesContent":["import { CanActivateFn, Router } from '@angular/router';\nimport { from, map, of, switchMap, take } from 'rxjs';\nimport { fetchAuthSession } from 'aws-amplify/auth';\n\nexport const authGuard: CanActivateFn = (route, state) => {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.idToken) {\n return of(true);\n }\n\n window.location.href = '/authenticate';\n return of(false);\n })\n );\n};\n","import {\n HttpRequest,\n HttpEvent,\n HttpInterceptorFn,\n HttpHandlerFn,\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// deprecated\nexport const dummyMemberIdInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const dummyMemberId = localStorage.getItem('dummyMemberId');\n\n if (req.url.startsWith('http://localhost')) {\n if (dummyMemberId) {\n const clonedRequest = req.clone({\n setHeaders: {\n 'X-Dummy-Member-Id': dummyMemberId || '',\n },\n });\n\n return next(clonedRequest);\n }\n }\n\n return next(req);\n};\n","import { createSelector, createFeatureSelector } from '@ngrx/store';\nimport { GlobalStateEx } from './global.state';\n\nexport namespace GlobalSelectors {\n export const selectGlobalState = createFeatureSelector<GlobalStateEx>('global');\n\n export const isInitiated = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.initiated,\n );\n\n export const selectIsAuthenticated = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.isAuthenticated\n );\n\n export const selectProfile = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.profile\n );\n\n export const selectIsLoading = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.loadingReference > 0,\n );\n\n export const selectAcl = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.acl,\n );\n\n export const selectListMenuItem = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.listMenuItem,\n );\n\n export const selectIsSideMenuOpen = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.isSideMenuOpen,\n );\n\n export const selectLanguage = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.language,\n );\n\n export const canActivate = (\n resource: string,\n action: string,\n shouldStripTag?: boolean,\n ) =>\n createSelector(selectAcl, (acl) => {\n const allowedActions: string[] = [];\n\n switch (action) {\n case 'delete':\n allowedActions.push('delete');\n break;\n case 'create':\n allowedActions.push('delete');\n allowedActions.push('create');\n break;\n case 'update':\n allowedActions.push('delete');\n allowedActions.push('create');\n allowedActions.push('update');\n break;\n case 'read':\n allowedActions.push('delete');\n allowedActions.push('create');\n allowedActions.push('update');\n allowedActions.push('read');\n }\n\n const result = Object.keys(acl).some((aclKey) => {\n return ['delete', 'create', 'update', 'read'].some((_action) => {\n if (undefined === acl[aclKey][_action]) {\n return false;\n }\n\n let [_resource, _conditionsRaw] = resource.split(':');\n const _conditions = _conditionsRaw ? _conditionsRaw.split('|') : [];\n\n _resource =\n shouldStripTag && _resource.includes('/')\n ? _resource.split('/')[0]\n : _resource;\n\n const _resourceAclArray = acl[aclKey][_action];\n\n return _resourceAclArray.some((_resourceAclRaw: string) => {\n const [_resourceAcl, _conditionsAclRaw] =\n _resourceAclRaw.split(':');\n const _conditionsAcl = _conditionsAclRaw\n ? _conditionsAclRaw.split('|')\n : [];\n\n if (_resourceAcl === '*') {\n return true;\n }\n\n if (\n _resource === _resourceAcl &&\n allowedActions.includes(_action) &&\n (_conditions.length === 0 ||\n _conditionsAcl.some((_condition) =>\n _conditions.includes(_condition),\n ))\n ) {\n return true;\n }\n\n return false;\n });\n });\n });\n\n return result;\n });\n\n export const selectCurrentGroupId = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.currentGroup?.id,\n );\n\n export const selectCurrentGroup = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.currentGroup,\n );\n}\n","import { inject } from '@angular/core';\nimport {\n HttpRequest,\n HttpEvent,\n HttpInterceptorFn,\n HttpHandlerFn,\n} from '@angular/common/http';\nimport { Observable, switchMap, take } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { GlobalSelectors } from '../store/global/global.selectors';\nimport { GlobalStateEx } from '../store/global/global.state';\n\n// deprecated\nexport const groupIdInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const store = inject(Store<GlobalStateEx>);\n const groupId$ = store.select(GlobalSelectors.selectCurrentGroupId);\n\n if (req.url.endsWith('/member/me')) return next(req);\n if (req.url.endsWith('/menu')) return next(req);\n if (req.url.endsWith('/acl')) return next(req);\n\n if (\n req.url.startsWith('https://api') ||\n req.url.startsWith('http://localhost')\n ) {\n return groupId$.pipe(\n switchMap((groupId) => {\n if (groupId) {\n const clonedRequest = req.clone({\n setHeaders: {\n 'X-Group-Id': groupId || '',\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n }),\n );\n }\n\n return next(req);\n};\n","import {\n HttpRequest,\n HttpEvent,\n HttpInterceptorFn,\n HttpHandlerFn,\n} from '@angular/common/http';\nimport { from, Observable, of, switchMap } from 'rxjs';\nimport { fetchAuthSession } from 'aws-amplify/auth';\n\nexport const idTokenInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn\n): Observable<HttpEvent<unknown>> => {\n if (req.url.endsWith('/oauth2/token')) return next(req);\n\n if (req.url.startsWith('https://api')) {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.idToken) {\n const clonedRequest = req.clone({\n setHeaders: {\n Authorization: `Bearer ${session.tokens.idToken}`,\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n })\n );\n } else if (req.url.startsWith('https://auth') || req.url.startsWith('https://eleven-auth')) {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.accessToken) {\n const clonedRequest = req.clone({\n setHeaders: {\n Authorization: `Bearer ${session.tokens.accessToken}`,\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n })\n );\n }\n\n return next(req);\n};\n","export namespace SearchParams {\n export interface IData {\n filter: Filter;\n sort: Sort[];\n page?: Page;\n }\n\n export interface Filter {\n [key: string]: any;\n }\n\n export const SortDirectionAsc = 'asc';\n export const SortDirectionDesc = 'desc'; \n export type SortDirection = typeof SortDirectionAsc | typeof SortDirectionDesc | undefined;\n\n export interface Sort {\n field: string | string[];\n direction: SortDirection\n }\n\n export interface Page{\n limit: number;\n searchAfter?: any;\n }\n\n // export interface OrderAndPage{\n // size: number;\n // sort: Order[];\n // searchAfter?: any[];\n // }\n}","import { isDevMode } from '@angular/core';\nimport { Acl } from './acl.model';\nimport { MenuItem } from './menu-item.model';\nimport { Observable } from 'rxjs';\n\nexport interface ApiResponse {\n error: string;\n message?: string;\n data?: Acl | MenuItem[] | any;\n lastEvaluatedKey?: any;\n total?: number;\n}\n\nexport interface ApiError {\n error: string;\n message?: string;\n}\n\nexport function responseHandler(response: ApiResponse): ApiResponse {\n if (!response) {\n errorHandler({\n error: 'empty response',\n message: 'empty response',\n } as ApiError);\n }\n\n if (response.error != '00') {\n errorHandler({\n error: response.error,\n message: response.message,\n } as ApiError);\n }\n\n return response;\n}\n\nexport function errorHandler(err: ApiError): Observable<never> {\n isDevMode() && console.error('API Error: ', err);\n throw err;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Member } from '../store/component/member.store';\n\n@Pipe({\n name: 'displayName',\n})\nexport class DisplayNamePipe implements PipeTransform {\n transform(member: Member.IData | null | undefined): string {\n if (!member) return '';\n return (\n member.nickname?.trim() ||\n (member.firstName || '') + ' ' + (member.lastName || '')\n );\n }\n}\n","import { createAction, props } from '@ngrx/store';\nimport { Acl } from '../../model/acl.model';\nimport { MenuItem } from '../../model/menu-item.model';\nimport { Member } from '../../store/component/member.store';\nimport { Group } from '../../store//component/group.store';\n\nexport namespace GlobalActions {\n export const markInitiated = createAction(\n '[Global] Mark Initiated',\n props<{ initiated: boolean }>(),\n );\n\n export const clearAuthentication = createAction(\n '[Global] Clear Authentication',\n );\n\n export const setAuthenticated = createAction(\n '[Global] Set Authenticated',\n props<{ isAuthenticated: boolean }>(),\n );\n\n export const setProfile = createAction(\n '[Global] Set Profile',\n props<{ profile: Member.IData & { [key: string]: any } }>(),\n );\n\n export const increaseLoadingReference = createAction(\n '[Global] Increase Loading Reference',\n );\n\n export const decreaseLoadingReference = createAction(\n '[Global] Decrease Loading Reference',\n );\n\n export const setAcl = createAction('[Global] Set Acl', props<{ acl: Acl }>());\n\n export const setListMenuItem = createAction(\n '[Global] Set List Menu Item',\n props<{ listMenuItem: MenuItem[] }>(),\n );\n\n export const toggleSideMenu = createAction('[Global] Toggle Side Menu');\n\n export const closeSideMenu = createAction('[Global] Close Side Menu');\n\n export const setLanguage = createAction(\n '[Global] Set Language',\n props<{ language: string }>(),\n );\n\n export const setCurrentGroup = createAction(\n '[Global] Set Current Group',\n props<{ group: Group.IData & { [key: string]: any } }>(),\n );\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { distinctUntilChanged, Observable, tap } from 'rxjs';\nimport { GlobalSelectors } from '../store/global/global.selectors';\nimport { GlobalState } from '../store/global/global.state';\nimport { Member } from '../store/component/member.store';\nimport { Group } from '../store/component/group.store';\nimport { GlobalActions } from '../store/global/global.actions';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService<TM extends Member.IData, TG extends Group.IData> {\n private readonly globalStore = inject(Store<GlobalState<TM, TG>>);\n\n canActivate(\n resource: string,\n action: string,\n shouldStripTag?: boolean,\n ): Observable<boolean> {\n return this.globalStore\n .select(GlobalSelectors.canActivate(resource, action, shouldStripTag))\n .pipe(distinctUntilChanged());\n }\n\n getProfile(): Observable<TM | undefined> {\n return this.globalStore.select(\n GlobalSelectors.selectProfile,\n ) as Observable<TM>;\n }\n\n setProfile(profile: TM): void {\n return this.globalStore.dispatch(GlobalActions.setProfile({ profile }));\n }\n\n isAuthenticated(): Observable<boolean> {\n return this.globalStore\n .select(GlobalSelectors.selectIsAuthenticated)\n .pipe(distinctUntilChanged());\n }\n}\n","import { inject, Injectable, InjectionToken, Provider } from '@angular/core';\nimport { LngLat } from '../model/map.model';\n\nexport const defaultLanguage = { id: 'en', value: 'English' };\nexport const supportedLanguages = [\n defaultLanguage,\n { id: 'ko', value: '한국어' },\n];\n\nexport interface HaloduckCoreConfig {\n stage: string;\n appName: string;\n defaultLanguage: string;\n dateFormat: {\n long: string;\n short: string;\n };\n apiUrl: string;\n cdnUrl: string;\n map: {\n googleApiKey: string;\n mapId: string;\n defaultLngLat: LngLat;\n };\n}\n\nexport const HALODUCK_CORE_CONFIG = new InjectionToken<HaloduckCoreConfig>(\n 'HALODUCK_CORE_CONFIG',\n {\n providedIn: 'root',\n factory: () => ({\n stage: 'local',\n appName: 'please-register-app-name-via-provideHaloduckCoreConfig',\n defaultLanguage: defaultLanguage.id,\n dateFormat: {\n long: 'yyyy-MM-dd',\n short: 'yyMMdd',\n },\n apiUrl: 'https://please-register-via-provideHaloduckCoreConfig.com',\n cdnUrl: 'https://please-register-via-provideHaloduckCoreConfig.com',\n map: {\n mapId: 'please-register-map-id-via-provideHaloduckCoreConfig',\n googleApiKey:\n 'please-register-google-api-key-via-provideHaloduckCoreConfig',\n defaultLngLat: {\n lat: 37.575971,\n lng: 126.976800,\n },\n },\n }),\n },\n);\n\nexport function provideHaloduckCoreConfig(\n config: HaloduckCoreConfig,\n): Provider {\n return {\n provide: HALODUCK_CORE_CONFIG,\n useValue: config,\n };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreService {\n private config = inject(HALODUCK_CORE_CONFIG);\n\n constructor() {}\n getStage(): string {\n return this.config.stage;\n }\n getAppName(): string {\n return this.config.appName;\n }\n getDefaultLanguage(): string {\n return this.config.defaultLanguage;\n }\n getApiUrl(): string {\n return this.config.apiUrl;\n }\n getCdnUrl(): string {\n return this.config.cdnUrl;\n }\n getDateFormatLong(): string {\n return this.config.dateFormat.long;\n }\n getDateFormatShort(): string {\n return this.config.dateFormat.short;\n }\n getGoogleApiKey(): string {\n return this.config.map.googleApiKey;\n }\n getMapId(): string {\n return this.config.map.mapId;\n }\n getDefaultLngLat(): LngLat {\n return this.config.map.defaultLngLat;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, map, Observable } from 'rxjs';\nimport {\n ApiResponse,\n errorHandler,\n responseHandler,\n} from '..//model/api-response.model';\nimport { SearchParams } from '..//model/api-param.model';\nimport { CoreService } from '../provider/config.provider';\n\nexport interface ParentEntity {\n name: string;\n id: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaseEntityApiService<T> {\n private readonly coreService = inject(CoreService);\n protected http = inject(HttpClient);\n protected apiUrl = this.coreService.getApiUrl();\n\n createEntity(entity: T, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .put<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}`,\n entity\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n getListEntity(searchParams: SearchParams.IData, parent?: ParentEntity): Observable<ApiResponse> {\n const filter = JSON.stringify(searchParams.filter);\n const sort = JSON.stringify(searchParams.sort);\n const page = searchParams.page ? JSON.stringify(searchParams.page) : '';\n\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}`,\n {\n params: { filter, sort, page },\n }\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n getEntityById(id: string, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}/${id}`\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n updateEntityById(id: string, entity: T, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .patch<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}/${id}`,\n entity\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n deleteEntityById(id: string, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .delete<ApiResponse>(\n `${this.apiUrl}/${ parent ? parent.name + '/' + parent.id + '/' : '' }${this.getEntityName()}/${id}`\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n getEntityName(): string {\n throw new Error('Method not implemented.');\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, delay, map, Observable, switchMap, tap } from 'rxjs';\nimport {\n ApiResponse,\n errorHandler,\n responseHandler,\n} from '../model/api-response.model';\nimport { CoreService } from '../provider/config.provider';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CdnApiService {\n private readonly coreService = inject(CoreService);\n private http = inject(HttpClient);\n private apiUrl = this.coreService.getApiUrl();\n\n upload(file: File, keyPrefix: string): Observable<string> {\n return this.getPresignedPutUrl(`${keyPrefix}/${file.name}`).pipe(\n switchMap((response) => {\n const presignedUrl = response.data.url;\n const key = response.data.key;\n return this.uploadFile(presignedUrl, file).pipe(\n map(() => {\n return key;\n }),\n catchError((error) => {\n console.error('Upload error:', error);\n return errorHandler(error);\n })\n );\n }),\n catchError((error) => {\n console.error('Error getting presigned URL:', error);\n return errorHandler(error);\n })\n );\n }\n\n getPresignedPutUrl(key: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/tool/presignedPutUrl`, {\n params: { key },\n })\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n uploadFile(presignedUrl: string, file: File): Observable<any> {\n return this.http\n .put<any>(presignedUrl, file, {\n headers: { 'x-amz-tagging': 'expire1D=true' },\n })\n .pipe(catchError((error) => errorHandler(error)));\n }\n\n getPresignedGetUrl(key: string): Observable<string> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/tool/presignedGetUrl`, {\n params: { key },\n })\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n map((response) => response.data.url)\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, map, Observable } from 'rxjs';\nimport {\n ApiResponse,\n errorHandler,\n responseHandler,\n} from '..//model/api-response.model';\nimport { CoreService } from '../provider/config.provider';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalApiService {\n private readonly coreService = inject(CoreService);\n private http = inject(HttpClient);\n private apiUrl = this.coreService.getApiUrl();\n\n getAcl(): Observable<ApiResponse> {\n return this.http.get<ApiResponse>(`${this.apiUrl}/acl`).pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n\n getListMenuItem(): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/menu`)\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Group } from '../store/component/group.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GroupApiService<T extends Group.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'group';\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ApiResponse,\n errorHandler,\n responseHandler,\n} from '../model/api-response.model';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Member } from '../store/component/member.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MemberApiService<T extends Member.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'member';\n }\n\n getProfile(): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${this.getEntityName()}/me`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n checkMemberByEmail(email: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${this.getEntityName()}/check/email/${email}`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n checkMemberByNickname(nickname: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${this.getEntityName()}/check/nickname/${nickname}`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n registration(member: T): Observable<ApiResponse> {\n return this.http\n .put<ApiResponse>(\n `${this.apiUrl}/${this.getEntityName()}/registration`,\n member,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Device } from '../store/component/device.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DeviceApiService<T extends Device.IData = Device.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'device';\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { catchError, switchMap, tap, withLatestFrom } from 'rxjs';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { ApiResponse } from '../../model/api-response.model';\nimport { SearchParams } from '../../model/api-param.model';\n\nexport interface TableRowProperty {\n isExpanded?: boolean;\n isSelected?: boolean;\n expandMode?: string;\n bgColor?: string;\n}\n\nexport interface IRow<TExpandMode> {\n id?: string;\n parentId?: string;\n children?: IRow<TExpandMode>[];\n expandMode?: TExpandMode;\n isExpanded?: boolean;\n isSelected?: boolean;\n}\n\nexport interface ITableStateParent {\n id: string;\n name: string;\n}\n\nexport const ITableStateStatusCreating = 'creating';\nexport const ITableStateStatusCreated = 'created';\nexport const ITableStateStatusFailedToCreate = 'failedToCreate';\nexport const ITableStateStatusUpdating = 'updating';\nexport const ITableStateStatusUpdated = 'updated';\nexport const ITableStateStatusFailedToUpdate = 'failedToUpdate';\nexport const ITableStateStatusDeleting = 'deleting';\nexport const ITableStateStatusDeleted = 'deleted';\nexport const ITableStateStatusFailedToDelete = 'failedToDelete';\nexport const ITableStateStatusLoading = 'loading';\nexport const ITableStateStatusLoaded = 'loaded';\nexport const ITableStateStatusFailedToLoad = 'failedToLoad';\n\nexport interface ITableState<TData> {\n status?:\n | typeof ITableStateStatusCreating\n | typeof ITableStateStatusCreated\n | typeof ITableStateStatusFailedToCreate\n | typeof ITableStateStatusUpdating\n | typeof ITableStateStatusUpdated\n | typeof ITableStateStatusFailedToUpdate\n | typeof ITableStateStatusDeleting\n | typeof ITableStateStatusDeleted\n | typeof ITableStateStatusFailedToDelete\n | typeof ITableStateStatusLoading\n | typeof ITableStateStatusLoaded\n | typeof ITableStateStatusFailedToLoad;\n parent?: ITableStateParent;\n isLoading: boolean;\n filter: SearchParams.Filter;\n sort: SearchParams.Sort[];\n page: SearchParams.Page;\n listEntity: TData[];\n lastEvaluatedKey?: any;\n totalCount?: number;\n currentCount?: number;\n}\n\n@Injectable()\nexport class TableStore<\n TState extends ITableState<TData>,\n TData extends IRow<TExpandMode>,\n TExpandMode,\n> extends ComponentStore<TState> {\n // selectors\n public readonly status$ = this.select((state) => state.status);\n public readonly parent$ = this.select((state) => state.parent);\n public readonly filter$ = this.select((state) => state.filter);\n public readonly sort$ = this.select((state) => state.sort);\n public readonly page$ = this.select((state) => state.page);\n public readonly listEntity$ = this.select((state) => state.listEntity);\n public readonly totalCount$ = this.select((state) => state.totalCount);\n public readonly currentCount$ = this.select((state) => state.currentCount);\n public readonly isLoading$ = this.select((state) => state.isLoading);\n public readonly lastEvaluatedKey$ = this.select(\n (state) => state.lastEvaluatedKey,\n );\n\n // effects\n public readonly loadListEntity = this.effect((trigger$) =>\n trigger$.pipe(\n withLatestFrom(\n this.listEntity$,\n this.filter$,\n this.sort$,\n this.page$,\n this.parent$,\n ),\n switchMap(([, listEntity, filter, sort, page, parent]) => {\n this.updateStatus(ITableStateStatusLoading);\n\n return this.apiService\n .getListEntity({ filter, sort, page }, parent)\n .pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: [\n ...listEntity,\n ...(response.data ? response.data : []),\n ],\n totalCount: listEntity.length === 0 ? response.total : (this.get()?.totalCount),\n currentCount: listEntity.length + (response.data ? response.data.length : 0),\n lastEvaluatedKey: response.lastEvaluatedKey,\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusLoaded);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToLoad);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly createEntity = this.effect<any>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([data, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusCreating);\n\n return this.apiService.createEntity(data, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: [\n ...(entity.children\n ? [response.data, ...entity.children]\n : [response.data]),\n ],\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: [\n ...(child.children\n ? [response.data, ...child.children]\n : [response.data]),\n ],\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return [\n ...(response.data ? [response.data] : []),\n ...listEntity,\n ];\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusCreated);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToCreate);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly getEntityById = this.effect<string>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([id, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusLoading);\n\n return this.apiService.getEntityById(id, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: [\n ...(entity.children ? [response.data, ...entity.children] : [response.data]),\n ],\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: [\n ...(child.children ? [response.data, ...child.children] : [response.data]),\n ],\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return listEntity.map((e) =>\n e.id === response.data.id ? response.data : e,\n );\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusLoaded);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToLoad);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly updateEntityById = this.effect<any>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([data, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusUpdating);\n\n return this.apiService.updateEntityById(data.id, data.entity, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.id ? response.data : child,\n ),\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: child.children?.map((grandChild) =>\n grandChild.id === response.data.id\n ? response.data\n : grandChild,\n ),\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return listEntity.map((e) =>\n e.id === response.data.id ? response.data : e,\n );\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusUpdated);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToUpdate);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly deleteEntityById = this.effect<string>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([id, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusDeleting);\n\n return this.apiService.deleteEntityById(id, parent).pipe(\n tap(() => {\n this.patchState({\n listEntity: listEntity.filter((e) => e.id !== id),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusDeleted);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToDelete);\n return [];\n }),\n );\n }),\n ),\n );\n\n // actions\n public readonly updateEntity = this.updater((state, data: TData) => ({\n ...state,\n listEntity: state.listEntity.map((e) => {\n return e.id === data.id ? data : e;\n }),\n }));\n\n public readonly updateStatus = this.updater(\n (state, status: TState['status']) => ({\n ...state,\n status,\n }),\n );\n\n public readonly setParent = this.updater(\n (state, parent?: ITableStateParent) => ({\n ...state,\n parent,\n }),\n );\n\n public readonly updateSortField = this.updater(\n (state, sort: SearchParams.Sort) => ({\n ...state,\n sort: [sort],\n }),\n );\n\n public readonly updateFilter = this.updater(\n (state, filter: SearchParams.Filter) => ({\n ...state,\n filter,\n }),\n );\n\n public readonly updatePage = this.updater(\n (state, page: SearchParams.Page) => ({\n ...state,\n page,\n }),\n );\n\n public readonly setExpandMode = this.updater(\n (state, { id, mode }: { id?: string; mode?: TExpandMode }) => ({\n ...state,\n listEntity: state.listEntity.map(\n (e) =>\n ({\n ...e,\n expandMode: e.id === id ? mode : e.expandMode,\n }) as TData,\n ),\n }),\n );\n\n public readonly toggleExpanded = this.updater(\n (state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? !(e.isExpanded || false) : e.isExpanded,\n })),\n }),\n );\n\n public readonly showExpanded = this.updater(\n (state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? true : e.isExpanded,\n })),\n }),\n );\n\n public readonly hideExpanded = this.updater(\n (state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? false : e.isExpanded,\n })),\n }),\n );\n\n public readonly toggleSelected = this.updater(\n (state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isSelected: e.id === id ? !(e.isSelected || false) : e.isSelected,\n })),\n }),\n );\n\n constructor(\n @Inject('initialState') protected initialState: TState,\n @Inject('apiService') protected apiService: any,\n ) {\n super(initialState);\n\n // this.loadListEntity();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SearchParams } from '../../model/api-param.model';\nimport { GroupApiService } from '../../service/group-api.service';\nimport { IRow, ITableState, TableStore, TableRowProperty } from './table.store';\n\nexport namespace Group {\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n deletedTimestamp?: Date;\n active?: boolean;\n organizationId?: string;\n organization?: any; // TODO: Define a proper type for organization\n type?: string;\n name: string;\n codePrefix?: string;\n timezone?: string;\n language?: string;\n pictureKey?: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n }\n\n export interface Filter {\n dateRange?: {\n from: Date;\n to: Date;\n };\n organizationId?: string[];\n id?: string[];\n type?: string[];\n active?: boolean | null;\n approved?: boolean | null;\n keyword?: string;\n }\n}\n\n@Injectable()\nexport class GroupStore extends TableStore<\n ITableState<Group.IData>,\n IRow<never>,\n never\n> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n dateRange: undefined,\n organizationId: [],\n id: [],\n type: [],\n active: null,\n approved: null,\n keyword: '',\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(GroupApiService),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SearchParams } from '../../model/api-param.model';\nimport { IRow, ITableState, TableStore, TableRowProperty } from './table.store';\nimport { MemberApiService } from '../../service/member-api.service';\nimport { Group } from './group.store';\n\nexport namespace Member {\n export type MemberType =\n 'systemMember' | 'systemAdmin';\n\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n active?: boolean;\n groupId?: string;\n group?: Group.IData;\n username?: string;\n role?: string;\n type?: string;\n lastName?: string;\n firstName?: string;\n nickname: string;\n mobile?: string;\n email?: string;\n status?: string;\n pictureKey?: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n // isUpdating?: boolean;\n // isDeleting?: boolean;\n }\n\n export interface Filter {\n dateRange?: {\n from: Date;\n to: Date;\n };\n organizationId: string[];\n groupId: string[];\n type: string[];\n active: boolean | null;\n keyword: string;\n }\n}\n\n@Injectable()\nexport class MemberStore extends TableStore<\n ITableState<Member.IData>,\n IRow<never>,\n never\n> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n dateRange: undefined,\n organizationId: [],\n groupId: [],\n type: [],\n active: null,\n keyword: '',\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(MemberApiService),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { IRow, ITableState, TableRowProperty, TableStore } from './table.store';\nimport { SearchParams } from '../../model/api-param.model';\nimport { DeviceApiService } from '../../service/device-api.service';\n\nexport namespace Device {\n export type DeviceType = 'printer';\n\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n campaignId?: string;\n type?: DeviceType;\n name: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n }\n\n export interface Filter {\n campaignId?: string;\n type?: DeviceType[];\n keyword?: string;\n }\n\n @Injectable()\n export class DeviceStore extends TableStore<ITableState<IData>, IRow<never>, Filter> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n campaignId: undefined,\n type: [],\n keyword: undefined,\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(DeviceApiService),\n );\n }\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, of } from 'rxjs';\nimport { catchError, finalize, mergeMap, withLatestFrom } from 'rxjs/operators';\nimport { GlobalSelectors } from './global.selectors';\nimport { GlobalApiService } from '../../service/global-api.service';\nimport { GlobalActions } from './global.actions';\nimport { MemberApiService } from '../../service/member-api.service';\nimport { GroupApiService } from '../../service/group-api.service';\nimport { GlobalState } from './global.state';\nimport { Member } from '../component/member.store';\nimport { Group } from '../component/group.store';\n\n@Injectable()\nexport class GlobalEffects<TM extends Member.IData, TG extends Group.IData> {\n private actions$ = inject(Actions);\n private memberApiService = inject(MemberApiService);\n private globalApiService = inject(GlobalApiService);\n private groupApiService = inject(GroupApiService);\n private store = inject(Store<GlobalState<TM, TG>>);\n\n setAuthenticated$ = createEffect(() =>\n this.actions$.pipe(\n ofType(GlobalActions.setAuthenticated),\n withLatestFrom(this.store.select(GlobalSelectors.selectIsAuthenticated)),\n mergeMap(([action, isAuthenticated]) => {\n if (isAuthenticated) {\n this.store.dispatch(GlobalActions.increaseLoadingReference());\n\n return forkJoin({\n profile: this.memberApiService.getProfile(),\n acl: this.globalApiService.getAcl(),\n listMenuItem: this.globalApiService.getListMenuItem(),\n }).pipe(\n mergeMap(({ profile, acl, listMenuItem }) => {\n const groupId = profile.data.groupId;\n return this.groupApiService.getEntityById(groupId).pipe(\n mergeMap((group) => [\n GlobalActions.setProfile({ profile: profile.data }),\n GlobalActions.setAcl({ acl: acl.data }),\n GlobalActions.setListMenuItem({\n listMenuItem: listMenuItem.data,\n }),\n GlobalActions.setCurrentGroup({ group: group.data }),\n GlobalActions.markInitiated( {initiated:true}),\n ])\n );\n }),\n catchError(() => of(GlobalActions.clearAuthentication())),\n finalize(() => {\n this.store.dispatch(GlobalActions.decreaseLoadingReference());\n })\n );\n }\n return of(GlobalActions.clearAuthentication());\n })\n )\n );\n}\n","import { Acl } from '../../model/acl.model';\nimport { MenuItem } from '../../model/menu-item.model';\nimport { Group, Member } from '../component';\n\nexport interface GlobalState<TM extends Member.IData, TG extends Group.IData> {\n initiated: boolean;\n isAuthenticated: boolean;\n loadingReference: number;\n acl: Acl;\n listMenuItem: MenuItem[];\n isSideMenuOpen: boolean;\n language: string;\n profile?: TM;\n currentGroup?: TG;\n}\n\nexport type GlobalStateEx = GlobalState<Member.IData & { [key: string]: any }, Group.IData & { [key: string]: any }>;\n\nexport const initialState: GlobalStateEx = {\n initiated: false,\n isAuthenticated: false,\n loadingReference: 0,\n acl: {},\n listMenuItem: [],\n isSideMenuOpen: false,\n language: 'en', // TODO: Use a proper language management system\n profile: undefined,\n currentGroup: undefined,\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { GlobalActions } from './global.actions';\nimport { initialState } from './global.state';\n\n\nexport const globalReducer = createReducer(\n initialState,\n on(GlobalActions.markInitiated, (state) => ({\n ...state,\n initiated: true,\n })),\n on(GlobalActions.setAuthenticated, (state, { isAuthenticated }) => ({\n ...state,\n isAuthenticated,\n })),\n on(GlobalActions.setProfile, (state, { profile }) => ({\n ...state,\n profile,\n })),\n on(GlobalActions.increaseLoadingReference, (state) => ({\n ...state,\n loadingReference: state.loadingReference + 1,\n })),\n on(GlobalActions.decreaseLoadingReference, (state) => ({\n ...state,\n loadingReference: Math.max(state.loadingReference - 1, 0),\n })),\n on(GlobalActions.setAcl, (state, { acl }) => ({\n ...state,\n acl,\n })),\n on(GlobalActions.setListMenuItem, (state, { listMenuItem }) => ({\n ...state,\n listMenuItem,\n })),\n on(GlobalActions.toggleSideMenu, (state) => ({\n ...state,\n isSideMenuOpen: !state.isSideMenuOpen,\n })),\n on(GlobalActions.closeSideMenu, (state) => ({\n ...state,\n isSideMenuOpen: false,\n })),\n on(GlobalActions.setLanguage, (state, { language }) => ({\n ...state,\n language,\n })),\n on(GlobalActions.setCurrentGroup, (state, { group }) => ({\n ...state,\n currentGroup: group,\n })),\n);\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","catchError","withLatestFrom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"haloduck-core.mjs","sources":["../../../../projects/haloduck/core/src/lib/guard/auth.guard.ts","../../../../projects/haloduck/core/src/lib/interceptor/dummy-member-id.interceptor.ts","../../../../projects/haloduck/core/src/lib/store/global/global.selectors.ts","../../../../projects/haloduck/core/src/lib/interceptor/group-id.interceptor.ts","../../../../projects/haloduck/core/src/lib/interceptor/id-token.interceptor.ts","../../../../projects/haloduck/core/src/lib/model/api-param.model.ts","../../../../projects/haloduck/core/src/lib/model/api-response.model.ts","../../../../projects/haloduck/core/src/lib/pipe/display-name.pipe.ts","../../../../projects/haloduck/core/src/lib/store/global/global.actions.ts","../../../../projects/haloduck/core/src/lib/service/auth.service.ts","../../../../projects/haloduck/core/src/lib/provider/config.provider.ts","../../../../projects/haloduck/core/src/lib/service/base-entity-api.service.ts","../../../../projects/haloduck/core/src/lib/service/cdn.service.ts","../../../../projects/haloduck/core/src/lib/service/global-api.service.ts","../../../../projects/haloduck/core/src/lib/service/group-api.service.ts","../../../../projects/haloduck/core/src/lib/service/member-api.service.ts","../../../../projects/haloduck/core/src/lib/service/device-api.service.ts","../../../../projects/haloduck/core/src/lib/store/component/table.store.ts","../../../../projects/haloduck/core/src/lib/store/component/group.store.ts","../../../../projects/haloduck/core/src/lib/store/component/member.store.ts","../../../../projects/haloduck/core/src/lib/store/component/device.store.ts","../../../../projects/haloduck/core/src/lib/store/global/global.effects.ts","../../../../projects/haloduck/core/src/lib/store/global/global.state.ts","../../../../projects/haloduck/core/src/lib/store/global/global.reducer.ts","../../../../projects/haloduck/core/src/public-api.ts","../../../../projects/haloduck/core/src/haloduck-core.ts"],"sourcesContent":["import { CanActivateFn, Router } from '@angular/router';\nimport { from, map, of, switchMap, take } from 'rxjs';\nimport { fetchAuthSession } from 'aws-amplify/auth';\n\nexport const authGuard: CanActivateFn = (route, state) => {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.idToken) {\n return of(true);\n }\n\n window.location.href = '/authenticate';\n return of(false);\n }),\n );\n};\n","import { HttpRequest, HttpEvent, HttpInterceptorFn, HttpHandlerFn } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n// deprecated\nexport const dummyMemberIdInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const dummyMemberId = localStorage.getItem('dummyMemberId');\n\n if (req.url.startsWith('http://localhost')) {\n if (dummyMemberId) {\n const clonedRequest = req.clone({\n setHeaders: {\n 'X-Dummy-Member-Id': dummyMemberId || '',\n },\n });\n\n return next(clonedRequest);\n }\n }\n\n return next(req);\n};\n","import { createSelector, createFeatureSelector } from '@ngrx/store';\nimport { GlobalStateEx } from './global.state';\n\nexport namespace GlobalSelectors {\n export const selectGlobalState = createFeatureSelector<GlobalStateEx>('global');\n\n export const isInitiated = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.initiated,\n );\n\n export const selectIsAuthenticated = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.isAuthenticated,\n );\n\n export const selectProfile = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.profile,\n );\n\n export const selectIsLoading = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.loadingReference > 0,\n );\n\n export const selectAcl = createSelector(selectGlobalState, (state: GlobalStateEx) => state.acl);\n\n export const selectListMenuItem = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.listMenuItem,\n );\n\n export const selectIsSideMenuOpen = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.isSideMenuOpen,\n );\n\n export const selectLanguage = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.language,\n );\n\n export const canActivate = (resource: string, action: string, shouldStripTag?: boolean) =>\n createSelector(selectAcl, (acl) => {\n const allowedActions: string[] = [];\n\n switch (action) {\n case 'delete':\n allowedActions.push('delete');\n break;\n case 'create':\n allowedActions.push('delete');\n allowedActions.push('create');\n break;\n case 'update':\n allowedActions.push('delete');\n allowedActions.push('create');\n allowedActions.push('update');\n break;\n case 'read':\n allowedActions.push('delete');\n allowedActions.push('create');\n allowedActions.push('update');\n allowedActions.push('read');\n }\n\n const result = Object.keys(acl).some((aclKey) => {\n return ['delete', 'create', 'update', 'read'].some((_action) => {\n if (undefined === acl[aclKey][_action]) {\n return false;\n }\n\n let [_resource, _conditionsRaw] = resource.split(':');\n const _conditions = _conditionsRaw ? _conditionsRaw.split('|') : [];\n\n _resource =\n shouldStripTag && _resource.includes('/') ? _resource.split('/')[0] : _resource;\n\n const _resourceAclArray = acl[aclKey][_action];\n\n return _resourceAclArray.some((_resourceAclRaw: string) => {\n const [_resourceAcl, _conditionsAclRaw] = _resourceAclRaw.split(':');\n const _conditionsAcl = _conditionsAclRaw ? _conditionsAclRaw.split('|') : [];\n\n if (_resourceAcl === '*') {\n return true;\n }\n\n if (\n _resource === _resourceAcl &&\n allowedActions.includes(_action) &&\n (_conditions.length === 0 ||\n _conditionsAcl.some((_condition) => _conditions.includes(_condition)))\n ) {\n return true;\n }\n\n return false;\n });\n });\n });\n\n return result;\n });\n\n export const selectCurrentGroupId = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.currentGroup?.id,\n );\n\n export const selectCurrentGroup = createSelector(\n selectGlobalState,\n (state: GlobalStateEx) => state.currentGroup,\n );\n}\n","import { inject } from '@angular/core';\nimport { HttpRequest, HttpEvent, HttpInterceptorFn, HttpHandlerFn } from '@angular/common/http';\nimport { Observable, switchMap, take } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { GlobalSelectors } from '../store/global/global.selectors';\nimport { GlobalStateEx } from '../store/global/global.state';\n\n// deprecated\nexport const groupIdInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const store = inject(Store<GlobalStateEx>);\n const groupId$ = store.select(GlobalSelectors.selectCurrentGroupId);\n\n if (req.url.endsWith('/member/me')) return next(req);\n if (req.url.endsWith('/menu')) return next(req);\n if (req.url.endsWith('/acl')) return next(req);\n\n if (req.url.startsWith('https://api') || req.url.startsWith('http://localhost')) {\n return groupId$.pipe(\n switchMap((groupId) => {\n if (groupId) {\n const clonedRequest = req.clone({\n setHeaders: {\n 'X-Group-Id': groupId || '',\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n }),\n );\n }\n\n return next(req);\n};\n","import { HttpRequest, HttpEvent, HttpInterceptorFn, HttpHandlerFn } from '@angular/common/http';\nimport { from, Observable, of, switchMap } from 'rxjs';\nimport { fetchAuthSession } from 'aws-amplify/auth';\n\nexport const idTokenInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n if (req.url.endsWith('/oauth2/token')) return next(req);\n\n if (req.url.startsWith('https://api')) {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.idToken) {\n const clonedRequest = req.clone({\n setHeaders: {\n Authorization: `Bearer ${session.tokens.idToken}`,\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n }),\n );\n } else if (req.url.startsWith('https://auth') || req.url.startsWith('https://eleven-auth')) {\n return from(fetchAuthSession()).pipe(\n switchMap((session) => {\n if (session.tokens?.accessToken) {\n const clonedRequest = req.clone({\n setHeaders: {\n Authorization: `Bearer ${session.tokens.accessToken}`,\n },\n });\n return next(clonedRequest);\n }\n\n return next(req);\n }),\n );\n }\n\n return next(req);\n};\n","export namespace SearchParams {\n export interface IData {\n filter: Filter;\n sort: Sort[];\n page?: Page;\n }\n\n export interface Filter {\n [key: string]: any;\n }\n\n export const SortDirectionAsc = 'asc';\n export const SortDirectionDesc = 'desc';\n export type SortDirection = typeof SortDirectionAsc | typeof SortDirectionDesc | undefined;\n\n export interface Sort {\n field: string | string[];\n direction: SortDirection;\n }\n\n export interface Page {\n limit: number;\n searchAfter?: any;\n }\n\n // export interface OrderAndPage{\n // size: number;\n // sort: Order[];\n // searchAfter?: any[];\n // }\n}\n","import { isDevMode } from '@angular/core';\nimport { Acl } from './acl.model';\nimport { MenuItem } from './menu-item.model';\nimport { Observable } from 'rxjs';\n\nexport interface ApiResponse {\n error: string;\n message?: string;\n data?: Acl | MenuItem[] | any;\n lastEvaluatedKey?: any;\n total?: number;\n}\n\nexport interface ApiError {\n error: string;\n message?: string;\n}\n\nexport function responseHandler(response: ApiResponse): ApiResponse {\n if (!response) {\n errorHandler({\n error: 'empty response',\n message: 'empty response',\n } as ApiError);\n }\n\n if (response.error != '00') {\n errorHandler({\n error: response.error,\n message: response.message,\n } as ApiError);\n }\n\n return response;\n}\n\nexport function errorHandler(err: ApiError): Observable<never> {\n isDevMode() && console.error('API Error: ', err);\n throw err;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Member } from '../store/component/member.store';\n\n@Pipe({\n name: 'displayName',\n})\nexport class DisplayNamePipe implements PipeTransform {\n transform(member: Member.IData | null | undefined): string {\n if (!member) return '';\n return member.nickname?.trim() || member.fullName || '' || (member.email || '').split('@')[0];\n }\n}\n","import { createAction, props } from '@ngrx/store';\nimport { Acl } from '../../model/acl.model';\nimport { MenuItem } from '../../model/menu-item.model';\nimport { Member } from '../../store/component/member.store';\nimport { Group } from '../../store//component/group.store';\n\nexport namespace GlobalActions {\n export const markInitiated = createAction(\n '[Global] Mark Initiated',\n props<{ initiated: boolean }>(),\n );\n\n export const clearAuthentication = createAction('[Global] Clear Authentication');\n\n export const setAuthenticated = createAction(\n '[Global] Set Authenticated',\n props<{ isAuthenticated: boolean }>(),\n );\n\n export const setProfile = createAction(\n '[Global] Set Profile',\n props<{ profile: Member.IData & { [key: string]: any } }>(),\n );\n\n export const increaseLoadingReference = createAction('[Global] Increase Loading Reference');\n\n export const decreaseLoadingReference = createAction('[Global] Decrease Loading Reference');\n\n export const setAcl = createAction('[Global] Set Acl', props<{ acl: Acl }>());\n\n export const setListMenuItem = createAction(\n '[Global] Set List Menu Item',\n props<{ listMenuItem: MenuItem[] }>(),\n );\n\n export const toggleSideMenu = createAction('[Global] Toggle Side Menu');\n\n export const closeSideMenu = createAction('[Global] Close Side Menu');\n\n export const setLanguage = createAction('[Global] Set Language', props<{ language: string }>());\n\n export const setCurrentGroup = createAction(\n '[Global] Set Current Group',\n props<{ group: Group.IData & { [key: string]: any } }>(),\n );\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { distinctUntilChanged, Observable, tap } from 'rxjs';\nimport { GlobalSelectors } from '../store/global/global.selectors';\nimport { GlobalState } from '../store/global/global.state';\nimport { Member } from '../store/component/member.store';\nimport { Group } from '../store/component/group.store';\nimport { GlobalActions } from '../store/global/global.actions';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService<TM extends Member.IData, TG extends Group.IData> {\n private readonly globalStore = inject(Store<GlobalState<TM, TG>>);\n\n canActivate(resource: string, action: string, shouldStripTag?: boolean): Observable<boolean> {\n return this.globalStore\n .select(GlobalSelectors.canActivate(resource, action, shouldStripTag))\n .pipe(distinctUntilChanged());\n }\n\n getProfile(): Observable<TM | undefined> {\n return this.globalStore.select(GlobalSelectors.selectProfile) as Observable<TM>;\n }\n\n setProfile(profile: TM): void {\n return this.globalStore.dispatch(GlobalActions.setProfile({ profile }));\n }\n\n isAuthenticated(): Observable<boolean> {\n return this.globalStore\n .select(GlobalSelectors.selectIsAuthenticated)\n .pipe(distinctUntilChanged());\n }\n}\n","import { inject, Injectable, InjectionToken, Provider } from '@angular/core';\nimport { LngLat } from '../model/map.model';\n\nexport const defaultLanguage = { id: 'en', value: 'English' };\nexport const supportedLanguages = [defaultLanguage, { id: 'ko', value: '한국어' }];\n\nexport interface HaloduckCoreConfig {\n stage: string;\n appName: string;\n defaultLanguage: string;\n dateFormat: {\n long: string;\n short: string;\n };\n apiUrl: string;\n cdnUrl: string;\n map: {\n googleApiKey: string;\n mapId: string;\n defaultLngLat: LngLat;\n };\n}\n\nexport const HALODUCK_CORE_CONFIG = new InjectionToken<HaloduckCoreConfig>('HALODUCK_CORE_CONFIG', {\n providedIn: 'root',\n factory: () => ({\n stage: 'local',\n appName: 'please-register-app-name-via-provideHaloduckCoreConfig',\n defaultLanguage: defaultLanguage.id,\n dateFormat: {\n long: 'yyyy-MM-dd',\n short: 'yyMMdd',\n },\n apiUrl: 'https://please-register-via-provideHaloduckCoreConfig.com',\n cdnUrl: 'https://please-register-via-provideHaloduckCoreConfig.com',\n map: {\n mapId: 'please-register-map-id-via-provideHaloduckCoreConfig',\n googleApiKey: 'please-register-google-api-key-via-provideHaloduckCoreConfig',\n defaultLngLat: {\n lat: 37.575971,\n lng: 126.9768,\n },\n },\n }),\n});\n\nexport function provideHaloduckCoreConfig(config: HaloduckCoreConfig): Provider {\n return {\n provide: HALODUCK_CORE_CONFIG,\n useValue: config,\n };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreService {\n private config = inject(HALODUCK_CORE_CONFIG);\n\n constructor() {}\n getStage(): string {\n return this.config.stage;\n }\n getAppName(): string {\n return this.config.appName;\n }\n getDefaultLanguage(): string {\n return this.config.defaultLanguage;\n }\n getApiUrl(): string {\n return this.config.apiUrl;\n }\n getCdnUrl(): string {\n return this.config.cdnUrl;\n }\n getDateFormatLong(): string {\n return this.config.dateFormat.long;\n }\n getDateFormatShort(): string {\n return this.config.dateFormat.short;\n }\n getGoogleApiKey(): string {\n return this.config.map.googleApiKey;\n }\n getMapId(): string {\n return this.config.map.mapId;\n }\n getDefaultLngLat(): LngLat {\n return this.config.map.defaultLngLat;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, map, Observable } from 'rxjs';\nimport { ApiResponse, errorHandler, responseHandler } from '..//model/api-response.model';\nimport { SearchParams } from '..//model/api-param.model';\nimport { CoreService } from '../provider/config.provider';\n\nexport interface ParentEntity {\n name: string;\n id: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaseEntityApiService<T> {\n private readonly coreService = inject(CoreService);\n protected http = inject(HttpClient);\n protected apiUrl = this.coreService.getApiUrl();\n\n createEntity(entity: T, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .put<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}`,\n entity,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n getListEntity(searchParams: SearchParams.IData, parent?: ParentEntity): Observable<ApiResponse> {\n const filter = JSON.stringify(searchParams.filter);\n const sort = JSON.stringify(searchParams.sort);\n const page = searchParams.page ? JSON.stringify(searchParams.page) : '';\n\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}`,\n {\n params: { filter, sort, page },\n },\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n getEntityById(id: string, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}/${id}`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n updateEntityById(id: string, entity: T, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .patch<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}/${id}`,\n entity,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n deleteEntityById(id: string, parent?: ParentEntity): Observable<ApiResponse> {\n return this.http\n .delete<ApiResponse>(\n `${this.apiUrl}/${parent ? parent.name + '/' + parent.id + '/' : ''}${this.getEntityName()}/${id}`,\n )\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n getEntityName(): string {\n throw new Error('Method not implemented.');\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, delay, map, Observable, switchMap, tap } from 'rxjs';\nimport { ApiResponse, errorHandler, responseHandler } from '../model/api-response.model';\nimport { CoreService } from '../provider/config.provider';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CdnApiService {\n private readonly coreService = inject(CoreService);\n private http = inject(HttpClient);\n private apiUrl = this.coreService.getApiUrl();\n\n upload(file: File, keyPrefix: string): Observable<string> {\n return this.getPresignedPutUrl(`${keyPrefix}/${file.name}`).pipe(\n switchMap((response) => {\n const presignedUrl = response.data.url;\n const key = response.data.key;\n return this.uploadFile(presignedUrl, file).pipe(\n map(() => {\n return key;\n }),\n catchError((error) => {\n console.error('Upload error:', error);\n return errorHandler(error);\n }),\n );\n }),\n catchError((error) => {\n console.error('Error getting presigned URL:', error);\n return errorHandler(error);\n }),\n );\n }\n\n getPresignedPutUrl(key: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/tool/presignedPutUrl`, {\n params: { key },\n })\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n uploadFile(presignedUrl: string, file: File): Observable<any> {\n return this.http\n .put<any>(presignedUrl, file, {\n headers: { 'x-amz-tagging': 'expire1D=true' },\n })\n .pipe(catchError((error) => errorHandler(error)));\n }\n\n getPresignedGetUrl(key: string): Observable<string> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/tool/presignedGetUrl`, {\n params: { key },\n })\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n map((response) => response.data.url),\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, map, Observable } from 'rxjs';\nimport { ApiResponse, errorHandler, responseHandler } from '..//model/api-response.model';\nimport { CoreService } from '../provider/config.provider';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GlobalApiService {\n private readonly coreService = inject(CoreService);\n private http = inject(HttpClient);\n private apiUrl = this.coreService.getApiUrl();\n\n getAcl(): Observable<ApiResponse> {\n return this.http.get<ApiResponse>(`${this.apiUrl}/acl`).pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n getListMenuItem(): Observable<ApiResponse> {\n return this.http.get<ApiResponse>(`${this.apiUrl}/menu`).pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Group } from '../store/component/group.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GroupApiService<T extends Group.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'group';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApiResponse, errorHandler, responseHandler } from '../model/api-response.model';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Member } from '../store/component/member.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MemberApiService<T extends Member.IData> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'member';\n }\n\n getProfile(): Observable<ApiResponse> {\n return this.http.get<ApiResponse>(`${this.apiUrl}/${this.getEntityName()}/me`).pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n checkMemberByEmail(email: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/${this.getEntityName()}/check/email/${email}`)\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n checkMemberByNickname(nickname: string): Observable<ApiResponse> {\n return this.http\n .get<ApiResponse>(`${this.apiUrl}/${this.getEntityName()}/check/nickname/${nickname}`)\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n\n registration(member: T): Observable<ApiResponse> {\n return this.http\n .put<ApiResponse>(`${this.apiUrl}/${this.getEntityName()}/registration`, member)\n .pipe(\n map((response) => responseHandler(response)),\n catchError((error) => errorHandler(error)),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseEntityApiService } from './base-entity-api.service';\nimport { Device } from '../store/component/device.store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DeviceApiService<\n T extends Device.IData = Device.IData,\n> extends BaseEntityApiService<T> {\n override getEntityName(): string {\n return 'device';\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { catchError, switchMap, tap, withLatestFrom } from 'rxjs';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { ApiResponse } from '../../model/api-response.model';\nimport { SearchParams } from '../../model/api-param.model';\n\nexport interface TableRowProperty {\n isExpanded?: boolean;\n isSelected?: boolean;\n expandMode?: string;\n bgColor?: string;\n}\n\nexport interface IRow<TExpandMode> {\n id?: string;\n parentId?: string;\n children?: IRow<TExpandMode>[];\n expandMode?: TExpandMode;\n isExpanded?: boolean;\n isSelected?: boolean;\n}\n\nexport interface ITableStateParent {\n id: string;\n name: string;\n}\n\nexport const ITableStateStatusCreating = 'creating';\nexport const ITableStateStatusCreated = 'created';\nexport const ITableStateStatusFailedToCreate = 'failedToCreate';\nexport const ITableStateStatusUpdating = 'updating';\nexport const ITableStateStatusUpdated = 'updated';\nexport const ITableStateStatusFailedToUpdate = 'failedToUpdate';\nexport const ITableStateStatusDeleting = 'deleting';\nexport const ITableStateStatusDeleted = 'deleted';\nexport const ITableStateStatusFailedToDelete = 'failedToDelete';\nexport const ITableStateStatusLoading = 'loading';\nexport const ITableStateStatusLoaded = 'loaded';\nexport const ITableStateStatusFailedToLoad = 'failedToLoad';\n\nexport interface ITableState<TData> {\n status?:\n | typeof ITableStateStatusCreating\n | typeof ITableStateStatusCreated\n | typeof ITableStateStatusFailedToCreate\n | typeof ITableStateStatusUpdating\n | typeof ITableStateStatusUpdated\n | typeof ITableStateStatusFailedToUpdate\n | typeof ITableStateStatusDeleting\n | typeof ITableStateStatusDeleted\n | typeof ITableStateStatusFailedToDelete\n | typeof ITableStateStatusLoading\n | typeof ITableStateStatusLoaded\n | typeof ITableStateStatusFailedToLoad;\n parent?: ITableStateParent;\n isLoading: boolean;\n filter: SearchParams.Filter;\n sort: SearchParams.Sort[];\n page: SearchParams.Page;\n listEntity: TData[];\n lastEvaluatedKey?: any;\n totalCount?: number;\n currentCount?: number;\n}\n\n@Injectable()\nexport class TableStore<\n TState extends ITableState<TData>,\n TData extends IRow<TExpandMode>,\n TExpandMode,\n> extends ComponentStore<TState> {\n // selectors\n public readonly status$ = this.select((state) => state.status);\n public readonly parent$ = this.select((state) => state.parent);\n public readonly filter$ = this.select((state) => state.filter);\n public readonly sort$ = this.select((state) => state.sort);\n public readonly page$ = this.select((state) => state.page);\n public readonly listEntity$ = this.select((state) => state.listEntity);\n public readonly totalCount$ = this.select((state) => state.totalCount);\n public readonly currentCount$ = this.select((state) => state.currentCount);\n public readonly isLoading$ = this.select((state) => state.isLoading);\n public readonly lastEvaluatedKey$ = this.select((state) => state.lastEvaluatedKey);\n\n // effects\n public readonly loadListEntity = this.effect((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.filter$, this.sort$, this.page$, this.parent$),\n switchMap(([, listEntity, filter, sort, page, parent]) => {\n this.updateStatus(ITableStateStatusLoading);\n\n return this.apiService.getListEntity({ filter, sort, page }, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: [...listEntity, ...(response.data ? response.data : [])],\n totalCount: listEntity.length === 0 ? response.total : this.get()?.totalCount,\n currentCount: listEntity.length + (response.data ? response.data.length : 0),\n lastEvaluatedKey: response.lastEvaluatedKey,\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusLoaded);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToLoad);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly createEntity = this.effect<any>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([data, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusCreating);\n\n return this.apiService.createEntity(data, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: [\n ...(entity.children\n ? [response.data, ...entity.children]\n : [response.data]),\n ],\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: [\n ...(child.children\n ? [response.data, ...child.children]\n : [response.data]),\n ],\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return [...(response.data ? [response.data] : []), ...listEntity];\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusCreated);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToCreate);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly getEntityById = this.effect<string>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([id, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusLoading);\n\n return this.apiService.getEntityById(id, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: [\n ...(entity.children\n ? [response.data, ...entity.children]\n : [response.data]),\n ],\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: [\n ...(child.children\n ? [response.data, ...child.children]\n : [response.data]),\n ],\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return listEntity.map((e) => (e.id === response.data.id ? response.data : e));\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusLoaded);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToLoad);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly updateEntityById = this.effect<any>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([data, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusUpdating);\n\n return this.apiService.updateEntityById(data.id, data.entity, parent).pipe(\n tap((response: ApiResponse) => {\n this.patchState({\n listEntity: (() => {\n if (response.data?.parentId) {\n const updatedListEntity = listEntity.map((entity) => {\n if (entity.id === response.data.parentId) {\n return {\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.id ? response.data : child,\n ),\n };\n }\n return entity;\n });\n\n const parentExists = updatedListEntity.some(\n (entity) => entity.id === response.data.parentId,\n );\n\n if (!parentExists) {\n return updatedListEntity.map((entity) => ({\n ...entity,\n children: entity.children?.map((child) =>\n child.id === response.data.parentId\n ? {\n ...child,\n children: child.children?.map((grandChild) =>\n grandChild.id === response.data.id ? response.data : grandChild,\n ),\n }\n : child,\n ),\n }));\n }\n\n return updatedListEntity;\n }\n\n return listEntity.map((e) => (e.id === response.data.id ? response.data : e));\n })(),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusUpdated);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToUpdate);\n return [];\n }),\n );\n }),\n ),\n );\n\n public readonly deleteEntityById = this.effect<string>((trigger$) =>\n trigger$.pipe(\n withLatestFrom(this.listEntity$, this.parent$),\n switchMap(([id, listEntity, parent]) => {\n this.updateStatus(ITableStateStatusDeleting);\n\n return this.apiService.deleteEntityById(id, parent).pipe(\n tap(() => {\n this.patchState({\n listEntity: listEntity.filter((e) => e.id !== id),\n } as Partial<TState>);\n\n this.updateStatus(ITableStateStatusDeleted);\n }),\n catchError(() => {\n this.updateStatus(ITableStateStatusFailedToDelete);\n return [];\n }),\n );\n }),\n ),\n );\n\n // actions\n public readonly updateEntity = this.updater((state, data: TData) => ({\n ...state,\n listEntity: state.listEntity.map((e) => {\n return e.id === data.id ? data : e;\n }),\n }));\n\n public readonly updateStatus = this.updater((state, status: TState['status']) => ({\n ...state,\n status,\n }));\n\n public readonly setParent = this.updater((state, parent?: ITableStateParent) => ({\n ...state,\n parent,\n }));\n\n public readonly updateSortField = this.updater((state, sort: SearchParams.Sort) => ({\n ...state,\n sort: [sort],\n }));\n\n public readonly updateFilter = this.updater((state, filter: SearchParams.Filter) => ({\n ...state,\n filter,\n }));\n\n public readonly updatePage = this.updater((state, page: SearchParams.Page) => ({\n ...state,\n page,\n }));\n\n public readonly setExpandMode = this.updater(\n (state, { id, mode }: { id?: string; mode?: TExpandMode }) => ({\n ...state,\n listEntity: state.listEntity.map(\n (e) =>\n ({\n ...e,\n expandMode: e.id === id ? mode : e.expandMode,\n }) as TData,\n ),\n }),\n );\n\n public readonly toggleExpanded = this.updater((state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? !(e.isExpanded || false) : e.isExpanded,\n })),\n }));\n\n public readonly showExpanded = this.updater((state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? true : e.isExpanded,\n })),\n }));\n\n public readonly hideExpanded = this.updater((state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isExpanded: e.id === id ? false : e.isExpanded,\n })),\n }));\n\n public readonly toggleSelected = this.updater((state, { id }: { id?: string }) => ({\n ...state,\n listEntity: state.listEntity.map((e) => ({\n ...e,\n isSelected: e.id === id ? !(e.isSelected || false) : e.isSelected,\n })),\n }));\n\n constructor(\n @Inject('initialState') protected initialState: TState,\n @Inject('apiService') protected apiService: any,\n ) {\n super(initialState);\n\n // this.loadListEntity();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SearchParams } from '../../model/api-param.model';\nimport { GroupApiService } from '../../service/group-api.service';\nimport { IRow, ITableState, TableStore, TableRowProperty } from './table.store';\n\nexport namespace Group {\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n deletedTimestamp?: Date;\n active?: boolean;\n organizationId?: string;\n organization?: any; // TODO: Define a proper type for organization\n type?: string;\n name: string;\n codePrefix?: string;\n timezone?: string;\n language?: string;\n pictureKey?: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n }\n\n export interface Filter {\n dateRange?: {\n from: Date;\n to: Date;\n };\n organizationId?: string[];\n id?: string[];\n type?: string[];\n active?: boolean | null;\n approved?: boolean | null;\n keyword?: string;\n }\n}\n\n@Injectable()\nexport class GroupStore extends TableStore<ITableState<Group.IData>, IRow<never>, never> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n dateRange: undefined,\n organizationId: [],\n id: [],\n type: [],\n active: null,\n approved: null,\n keyword: '',\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(GroupApiService),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SearchParams } from '../../model/api-param.model';\nimport { IRow, ITableState, TableStore, TableRowProperty } from './table.store';\nimport { MemberApiService } from '../../service/member-api.service';\nimport { Group } from './group.store';\n\nexport namespace Member {\n export type MemberType = 'systemMember' | 'systemAdmin';\n\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n active?: boolean;\n groupId?: string;\n group?: Group.IData;\n username?: string;\n role?: string;\n type?: string;\n fullName?: string;\n nickname: string;\n mobile?: string;\n email?: string;\n status?: string;\n pictureKey?: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n // isUpdating?: boolean;\n // isDeleting?: boolean;\n }\n\n export interface Filter {\n dateRange?: {\n from: Date;\n to: Date;\n };\n organizationId: string[];\n groupId: string[];\n type: string[];\n active: boolean | null;\n keyword: string;\n }\n}\n\n@Injectable()\nexport class MemberStore extends TableStore<ITableState<Member.IData>, IRow<never>, never> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n dateRange: undefined,\n organizationId: [],\n groupId: [],\n type: [],\n active: null,\n keyword: '',\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(MemberApiService),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { IRow, ITableState, TableRowProperty, TableStore } from './table.store';\nimport { SearchParams } from '../../model/api-param.model';\nimport { DeviceApiService } from '../../service/device-api.service';\n\nexport namespace Device {\n export type DeviceType = 'printer';\n\n export interface IData {\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n campaignId?: string;\n type?: DeviceType;\n name: string;\n }\n\n export interface IDataEx extends IData, TableRowProperty {\n isLoading?: boolean;\n }\n\n export interface Filter {\n campaignId?: string;\n type?: DeviceType[];\n keyword?: string;\n }\n\n @Injectable()\n export class DeviceStore extends TableStore<ITableState<IData>, IRow<never>, Filter> {\n constructor() {\n super(\n {\n isLoading: false,\n filter: {\n campaignId: undefined,\n type: [],\n keyword: undefined,\n },\n sort: [\n {\n field: 'created_timestamp',\n direction: SearchParams.SortDirectionDesc,\n },\n ],\n page: {\n limit: 10,\n },\n listEntity: [],\n },\n inject(DeviceApiService),\n );\n }\n }\n}\n","import { inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, of, Observable } from 'rxjs';\nimport { catchError, finalize, mergeMap, withLatestFrom } from 'rxjs/operators';\nimport { GlobalSelectors } from './global.selectors';\nimport { GlobalApiService } from '../../service/global-api.service';\nimport { GlobalActions } from './global.actions';\nimport { MemberApiService } from '../../service/member-api.service';\nimport { GroupApiService } from '../../service/group-api.service';\nimport { GlobalState } from './global.state';\nimport { Member } from '../component/member.store';\nimport { Group } from '../component/group.store';\n\n// GlobalEffects options interface\nexport interface GlobalEffectsOptions<TM extends Member.IData> {\n getProfile?: () => Observable<{ data: TM }>;\n}\n\n// Injection token for GlobalEffects options\nexport const GLOBAL_EFFECTS_OPTIONS = new InjectionToken<GlobalEffectsOptions<any>>(\n 'GLOBAL_EFFECTS_OPTIONS'\n);\n\n// Provider function for easier configuration in ApplicationConfig\nexport function provideGlobalEffectsOptions<TM extends Member.IData>(\n options: GlobalEffectsOptions<TM>\n) {\n return {\n provide: GLOBAL_EFFECTS_OPTIONS,\n useValue: options,\n };\n}\n\n@Injectable()\nexport class GlobalEffects<TM extends Member.IData, TG extends Group.IData> {\n private actions$ = inject(Actions);\n private memberApiService = inject(MemberApiService);\n private globalApiService = inject(GlobalApiService);\n private groupApiService = inject(GroupApiService);\n private store = inject(Store<GlobalState<TM, TG>>);\n private options = inject(GLOBAL_EFFECTS_OPTIONS, { optional: true });\n\n setAuthenticated$ = createEffect(() =>\n this.actions$.pipe(\n ofType(GlobalActions.setAuthenticated),\n withLatestFrom(this.store.select(GlobalSelectors.selectIsAuthenticated)),\n mergeMap(([action, isAuthenticated]) => {\n if (isAuthenticated) {\n this.store.dispatch(GlobalActions.increaseLoadingReference());\n\n return forkJoin({\n profile: this.options?.getProfile?.() || this.memberApiService.getProfile(),\n acl: this.globalApiService.getAcl(),\n listMenuItem: this.globalApiService.getListMenuItem(),\n }).pipe(\n mergeMap(({ profile, acl, listMenuItem }) => {\n const groupId = profile.data.groupId;\n return this.groupApiService.getEntityById(groupId).pipe(\n mergeMap((group) => [\n GlobalActions.setProfile({ profile: profile.data }),\n GlobalActions.setAcl({ acl: acl.data }),\n GlobalActions.setListMenuItem({\n listMenuItem: listMenuItem.data,\n }),\n GlobalActions.setCurrentGroup({ group: group.data }),\n GlobalActions.markInitiated({ initiated: true }),\n ]),\n );\n }),\n catchError(() => of(GlobalActions.clearAuthentication())),\n finalize(() => {\n this.store.dispatch(GlobalActions.decreaseLoadingReference());\n }),\n );\n }\n return of(GlobalActions.clearAuthentication());\n }),\n ),\n );\n}\n","import { Acl } from '../../model/acl.model';\nimport { MenuItem } from '../../model/menu-item.model';\nimport { Group, Member } from '../component';\n\nexport interface GlobalState<TM extends Member.IData, TG extends Group.IData> {\n initiated: boolean;\n isAuthenticated: boolean;\n loadingReference: number;\n acl: Acl;\n listMenuItem: MenuItem[];\n isSideMenuOpen: boolean;\n language: string;\n profile?: TM;\n currentGroup?: TG;\n}\n\nexport type GlobalStateEx = GlobalState<\n Member.IData & { [key: string]: any },\n Group.IData & { [key: string]: any }\n>;\n\nexport const initialState: GlobalStateEx = {\n initiated: false,\n isAuthenticated: false,\n loadingReference: 0,\n acl: {},\n listMenuItem: [],\n isSideMenuOpen: false,\n language: 'en', // TODO: Use a proper language management system\n profile: undefined,\n currentGroup: undefined,\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { GlobalActions } from './global.actions';\nimport { initialState } from './global.state';\n\nexport const globalReducer = createReducer(\n initialState,\n on(GlobalActions.markInitiated, (state) => ({\n ...state,\n initiated: true,\n })),\n on(GlobalActions.setAuthenticated, (state, { isAuthenticated }) => ({\n ...state,\n isAuthenticated,\n })),\n on(GlobalActions.setProfile, (state, { profile }) => ({\n ...state,\n profile,\n })),\n on(GlobalActions.increaseLoadingReference, (state) => ({\n ...state,\n loadingReference: state.loadingReference + 1,\n })),\n on(GlobalActions.decreaseLoadingReference, (state) => ({\n ...state,\n loadingReference: Math.max(state.loadingReference - 1, 0),\n })),\n on(GlobalActions.setAcl, (state, { acl }) => ({\n ...state,\n acl,\n })),\n on(GlobalActions.setListMenuItem, (state, { listMenuItem }) => ({\n ...state,\n listMenuItem,\n })),\n on(GlobalActions.toggleSideMenu, (state) => ({\n ...state,\n isSideMenuOpen: !state.isSideMenuOpen,\n })),\n on(GlobalActions.closeSideMenu, (state) => ({\n ...state,\n isSideMenuOpen: false,\n })),\n on(GlobalActions.setLanguage, (state, { language }) => ({\n ...state,\n language,\n })),\n on(GlobalActions.setCurrentGroup, (state, { group }) => ({\n ...state,\n currentGroup: group,\n })),\n);\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","catchError","withLatestFrom"],"mappings":"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"}
|
|
Binary file
|
package/index.d.ts
CHANGED
|
@@ -233,8 +233,7 @@ declare namespace Member {
|
|
|
233
233
|
username?: string;
|
|
234
234
|
role?: string;
|
|
235
235
|
type?: string;
|
|
236
|
-
|
|
237
|
-
firstName?: string;
|
|
236
|
+
fullName?: string;
|
|
238
237
|
nickname: string;
|
|
239
238
|
mobile?: string;
|
|
240
239
|
email?: string;
|
|
@@ -416,15 +415,24 @@ declare namespace GlobalActions {
|
|
|
416
415
|
} & _ngrx_store.Action<"[Global] Set Current Group">>;
|
|
417
416
|
}
|
|
418
417
|
|
|
418
|
+
interface GlobalEffectsOptions<TM extends Member.IData> {
|
|
419
|
+
getProfile?: () => Observable<{
|
|
420
|
+
data: TM;
|
|
421
|
+
}>;
|
|
422
|
+
}
|
|
423
|
+
declare const GLOBAL_EFFECTS_OPTIONS: InjectionToken<GlobalEffectsOptions<any>>;
|
|
424
|
+
declare function provideGlobalEffectsOptions<TM extends Member.IData>(options: GlobalEffectsOptions<TM>): {
|
|
425
|
+
provide: InjectionToken<GlobalEffectsOptions<any>>;
|
|
426
|
+
useValue: GlobalEffectsOptions<TM>;
|
|
427
|
+
};
|
|
419
428
|
declare class GlobalEffects<TM extends Member.IData, TG extends Group.IData> {
|
|
420
429
|
private actions$;
|
|
421
430
|
private memberApiService;
|
|
422
431
|
private globalApiService;
|
|
423
432
|
private groupApiService;
|
|
424
433
|
private store;
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
} & _ngrx_store.Action<"[Global] Mark Initiated">) | ({
|
|
434
|
+
private options;
|
|
435
|
+
setAuthenticated$: Observable<({
|
|
428
436
|
profile: Member.IData & {
|
|
429
437
|
[key: string]: any;
|
|
430
438
|
};
|
|
@@ -436,7 +444,9 @@ declare class GlobalEffects<TM extends Member.IData, TG extends Group.IData> {
|
|
|
436
444
|
group: Group.IData & {
|
|
437
445
|
[key: string]: any;
|
|
438
446
|
};
|
|
439
|
-
} & _ngrx_store.Action<"[Global] Set Current Group">)
|
|
447
|
+
} & _ngrx_store.Action<"[Global] Set Current Group">) | ({
|
|
448
|
+
initiated: boolean;
|
|
449
|
+
} & _ngrx_store.Action<"[Global] Mark Initiated">) | _ngrx_store.Action<"[Global] Clear Authentication">> & _ngrx_effects.CreateEffectMetadata;
|
|
440
450
|
static ɵfac: i0.ɵɵFactoryDeclaration<GlobalEffects<any, any>, never>;
|
|
441
451
|
static ɵprov: i0.ɵɵInjectableDeclaration<GlobalEffects<any, any>>;
|
|
442
452
|
}
|
|
@@ -527,5 +537,5 @@ declare class CoreService {
|
|
|
527
537
|
static ɵprov: i0.ɵɵInjectableDeclaration<CoreService>;
|
|
528
538
|
}
|
|
529
539
|
|
|
530
|
-
export { AuthService, BaseEntityApiService, CdnApiService, CoreService, Device, DeviceApiService, DisplayNamePipe, GlobalActions, GlobalApiService, GlobalEffects, GlobalSelectors, Group, GroupApiService, GroupStore, HALODUCK_CORE_CONFIG, ITableStateStatusCreated, ITableStateStatusCreating, ITableStateStatusDeleted, ITableStateStatusDeleting, ITableStateStatusFailedToCreate, ITableStateStatusFailedToDelete, ITableStateStatusFailedToLoad, ITableStateStatusFailedToUpdate, ITableStateStatusLoaded, ITableStateStatusLoading, ITableStateStatusUpdated, ITableStateStatusUpdating, Member, MemberApiService, MemberStore, SearchParams, TableStore, authGuard, defaultLanguage, dummyMemberIdInterceptor, errorHandler, globalReducer, groupIdInterceptor, idTokenInterceptor, initialState, provideHaloduckCoreConfig, responseHandler, supportedLanguages };
|
|
531
|
-
export type { Acl, AclAction, ApiError, ApiResponse, GlobalState, GlobalStateEx, HaloduckCoreConfig, IRow, ITableState, ITableStateParent, LngLat, MenuItem, MenuItemEx, ParentEntity, TableRowProperty };
|
|
540
|
+
export { AuthService, BaseEntityApiService, CdnApiService, CoreService, Device, DeviceApiService, DisplayNamePipe, GLOBAL_EFFECTS_OPTIONS, GlobalActions, GlobalApiService, GlobalEffects, GlobalSelectors, Group, GroupApiService, GroupStore, HALODUCK_CORE_CONFIG, ITableStateStatusCreated, ITableStateStatusCreating, ITableStateStatusDeleted, ITableStateStatusDeleting, ITableStateStatusFailedToCreate, ITableStateStatusFailedToDelete, ITableStateStatusFailedToLoad, ITableStateStatusFailedToUpdate, ITableStateStatusLoaded, ITableStateStatusLoading, ITableStateStatusUpdated, ITableStateStatusUpdating, Member, MemberApiService, MemberStore, SearchParams, TableStore, authGuard, defaultLanguage, dummyMemberIdInterceptor, errorHandler, globalReducer, groupIdInterceptor, idTokenInterceptor, initialState, provideGlobalEffectsOptions, provideHaloduckCoreConfig, responseHandler, supportedLanguages };
|
|
541
|
+
export type { Acl, AclAction, ApiError, ApiResponse, GlobalEffectsOptions, GlobalState, GlobalStateEx, HaloduckCoreConfig, IRow, ITableState, ITableStateParent, LngLat, MenuItem, MenuItemEx, ParentEntity, TableRowProperty };
|