@haloduck/core 2.0.8 → 2.0.10

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 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 [GitHub Issues](https://github.com/haloduck/haloduck-frontend/issues)
119
+ If you have any issues or questions, please register them in
120
+ [GitHub Issues](https://github.com/haloduck/haloduck-frontend/issues)
@@ -1,4 +1,4 @@
1
- import { from, switchMap, of, distinctUntilChanged, map, catchError, delay, withLatestFrom, tap, forkJoin } from 'rxjs';
1
+ import { from, switchMap, of, distinctUntilChanged, map, catchError, withLatestFrom, tap, forkJoin } from 'rxjs';
2
2
  import { fetchAuthSession } from 'aws-amplify/auth';
3
3
  import * as i0 from '@angular/core';
4
4
  import { inject, isDevMode, Pipe, Injectable, InjectionToken, Inject } from '@angular/core';
@@ -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 (member.nickname?.trim() ||
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.976800,
269
+ lng: 126.9768,
279
270
  },
280
271
  },
281
272
  }),
@@ -414,8 +405,7 @@ class CdnApiService {
414
405
  .get(`${this.apiUrl}/tool/presignedGetUrl`, {
415
406
  params: { key },
416
407
  })
417
- .pipe(delay(10000), // Simulate a delay of 1 second
418
- map((response) => responseHandler(response)), catchError((error) => errorHandler(error)), map((response) => response.data.url));
408
+ .pipe(map((response) => responseHandler(response)), catchError((error) => errorHandler(error)), map((response) => response.data.url));
419
409
  }
420
410
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CdnApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
421
411
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CdnApiService, providedIn: 'root' });
@@ -435,9 +425,7 @@ class GlobalApiService {
435
425
  return this.http.get(`${this.apiUrl}/acl`).pipe(map((response) => responseHandler(response)), catchError((error) => errorHandler(error)));
436
426
  }
437
427
  getListMenuItem() {
438
- return this.http
439
- .get(`${this.apiUrl}/menu`)
440
- .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)));
441
429
  }
442
430
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: GlobalApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
443
431
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: GlobalApiService, providedIn: 'root' });
@@ -468,9 +456,7 @@ class MemberApiService extends BaseEntityApiService {
468
456
  return 'member';
469
457
  }
470
458
  getProfile() {
471
- return this.http
472
- .get(`${this.apiUrl}/${this.getEntityName()}/me`)
473
- .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)));
474
460
  }
475
461
  checkMemberByEmail(email) {
476
462
  return this.http
@@ -540,15 +526,10 @@ class TableStore extends ComponentStore {
540
526
  // effects
541
527
  loadListEntity = this.effect((trigger$) => trigger$.pipe(withLatestFrom(this.listEntity$, this.filter$, this.sort$, this.page$, this.parent$), switchMap(([, listEntity, filter, sort, page, parent]) => {
542
528
  this.updateStatus(ITableStateStatusLoading);
543
- return this.apiService
544
- .getListEntity({ filter, sort, page }, parent)
545
- .pipe(tap((response) => {
529
+ return this.apiService.getListEntity({ filter, sort, page }, parent).pipe(tap((response) => {
546
530
  this.patchState({
547
- listEntity: [
548
- ...listEntity,
549
- ...(response.data ? response.data : []),
550
- ],
551
- 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,
552
533
  currentCount: listEntity.length + (response.data ? response.data.length : 0),
553
534
  lastEvaluatedKey: response.lastEvaluatedKey,
554
535
  });
@@ -595,10 +576,7 @@ class TableStore extends ComponentStore {
595
576
  }
596
577
  return updatedListEntity;
597
578
  }
598
- return [
599
- ...(response.data ? [response.data] : []),
600
- ...listEntity,
601
- ];
579
+ return [...(response.data ? [response.data] : []), ...listEntity];
602
580
  })(),
603
581
  });
604
582
  this.updateStatus(ITableStateStatusCreated);
@@ -618,7 +596,9 @@ class TableStore extends ComponentStore {
618
596
  return {
619
597
  ...entity,
620
598
  children: [
621
- ...(entity.children ? [response.data, ...entity.children] : [response.data]),
599
+ ...(entity.children
600
+ ? [response.data, ...entity.children]
601
+ : [response.data]),
622
602
  ],
623
603
  };
624
604
  }
@@ -632,7 +612,9 @@ class TableStore extends ComponentStore {
632
612
  ? {
633
613
  ...child,
634
614
  children: [
635
- ...(child.children ? [response.data, ...child.children] : [response.data]),
615
+ ...(child.children
616
+ ? [response.data, ...child.children]
617
+ : [response.data]),
636
618
  ],
637
619
  }
638
620
  : child),
@@ -640,7 +622,7 @@ class TableStore extends ComponentStore {
640
622
  }
641
623
  return updatedListEntity;
642
624
  }
643
- 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));
644
626
  })(),
645
627
  });
646
628
  this.updateStatus(ITableStateStatusLoaded);
@@ -671,16 +653,14 @@ class TableStore extends ComponentStore {
671
653
  children: entity.children?.map((child) => child.id === response.data.parentId
672
654
  ? {
673
655
  ...child,
674
- children: child.children?.map((grandChild) => grandChild.id === response.data.id
675
- ? response.data
676
- : grandChild),
656
+ children: child.children?.map((grandChild) => grandChild.id === response.data.id ? response.data : grandChild),
677
657
  }
678
658
  : child),
679
659
  }));
680
660
  }
681
661
  return updatedListEntity;
682
662
  }
683
- 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));
684
664
  })(),
685
665
  });
686
666
  this.updateStatus(ITableStateStatusUpdated);
@@ -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 delay(10000), // Simulate a delay of 1 second\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 } 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<\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
- lastName?: string;
237
- firstName?: string;
236
+ fullName?: string;
238
237
  nickname: string;
239
238
  mobile?: string;
240
239
  email?: string;
@@ -422,9 +421,9 @@ declare class GlobalEffects<TM extends Member.IData, TG extends Group.IData> {
422
421
  private globalApiService;
423
422
  private groupApiService;
424
423
  private store;
425
- setAuthenticated$: rxjs.Observable<_ngrx_store.Action<"[Global] Clear Authentication"> | ({
424
+ setAuthenticated$: rxjs.Observable<({
426
425
  initiated: boolean;
427
- } & _ngrx_store.Action<"[Global] Mark Initiated">) | ({
426
+ } & _ngrx_store.Action<"[Global] Mark Initiated">) | _ngrx_store.Action<"[Global] Clear Authentication"> | ({
428
427
  profile: Member.IData & {
429
428
  [key: string]: any;
430
429
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haloduck/core",
3
- "version": "2.0.8",
3
+ "version": "2.0.10",
4
4
  "description": "HaloDuck Core Library - Angular",
5
5
  "keywords": [
6
6
  "angular",