@haloduck/core 2.0.9 → 2.0.11

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