oip-common 0.2.2 → 0.3.1

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/index.d.ts CHANGED
@@ -1,17 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnDestroy, OnInit, DestroyRef, WritableSignal, OnChanges, SimpleChanges, Type, Provider, InjectionToken, EventEmitter, Renderer2, EnvironmentProviders, PipeTransform } from '@angular/core';
2
+ import { OnDestroy, OnInit, DestroyRef, WritableSignal, OnChanges, SimpleChanges, Type, Provider, InjectionToken, EventEmitter, Renderer2, EnvironmentProviders } from '@angular/core';
3
3
  import { MessageService, ToastMessageOptions, MenuItem, ConfirmationService, FilterMetadata } from 'primeng/api';
4
4
  import { ActivatedRoute, QueryParamsHandling, IsActiveMatchOptions, Params, Router, UrlTree } from '@angular/router';
5
5
  import { InterpolationParameters, Translation, TranslationObject, TranslateService } from '@ngx-translate/core';
6
6
  import * as rxjs from 'rxjs';
7
7
  import { Observable, BehaviorSubject, Subscription, Subject } from 'rxjs';
8
- import { LoginResponse, AuthOptions, OidcSecurityService, LogoutAuthOptions, AbstractSecurityStorage, StsConfigHttpLoader } from 'angular-auth-oidc-client';
8
+ import { LoginResponse, AuthOptions, OidcSecurityService, LogoutAuthOptions } from 'angular-auth-oidc-client';
9
9
  import { ContextMenu } from 'primeng/contextmenu';
10
10
  import { PaletteDesignToken, Preset } from '@primeuix/themes/types';
11
11
  import { PrimeNG } from 'primeng/config';
12
+ import { PaginatorState } from 'primeng/paginator';
12
13
  import { Table } from 'primeng/table';
13
- import { HttpInterceptorFn, HttpClient as HttpClient$1 } from '@angular/common/http';
14
- import { SafeUrl } from '@angular/platform-browser';
14
+ import { HttpInterceptorFn } from '@angular/common/http';
15
15
 
16
16
  interface TopBarDto {
17
17
  id: 'content' | 'settings' | 'security';
@@ -55,44 +55,6 @@ declare class MsgService {
55
55
  static ɵprov: i0.ɵɵInjectableDeclaration<MsgService>;
56
56
  }
57
57
 
58
- /**
59
- * BaseDataService provides a unified interface for sending HTTP requests
60
- * using Angular's HttpClient. It supports standard HTTP methods and automatic
61
- * credential handling.
62
- */
63
- declare class BaseDataService {
64
- private readonly http;
65
- private readonly frontendConfig;
66
- /**
67
- * Gets the base URL of the application from the HTML <base> tag.
68
- */
69
- get baseUrl(): string;
70
- /**
71
- * Builds a fully-qualified application URL based on frontend mode.
72
- */
73
- buildUrl(path: string): string;
74
- /**
75
- * Sends an HTTP request with the specified method and data.
76
- *
77
- * @template TResponse - Expected response type.
78
- * @param url - The target URL for the HTTP request.
79
- * @param method - The HTTP method to use (GET, PUT, POST, DELETE). Default is 'GET'.
80
- * @param data - An object containing request parameters or payload.
81
- * @returns A promise that resolves to the response of type TResponse.
82
- */
83
- sendRequest<TResponse>(url: string, method?: 'GET' | 'PUT' | 'POST' | 'DELETE', data?: any): Promise<TResponse>;
84
- /**
85
- * Sends a GET request and retrieves a response as a Blob.
86
- *
87
- * @param url - The target URL for the GET request.
88
- * @returns A promise that resolves to a Object response.
89
- */
90
- getBlob(url: string): Promise<object>;
91
- private normalizeBaseUrl;
92
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseDataService, never>;
93
- static ɵprov: i0.ɵɵInjectableDeclaration<BaseDataService>;
94
- }
95
-
96
58
  /**
97
59
  * Service to manage the application title.
98
60
  */
@@ -229,22 +191,13 @@ interface SecurityDto {
229
191
  roles: string[];
230
192
  }
231
193
 
232
- interface PutSecurityDto {
233
- id: number;
234
- securities: SecurityDto[];
235
- }
236
-
237
- declare class SecurityDataService extends BaseDataService {
238
- getSecurity(controller: string, id: number): Promise<SecurityDto[]>;
239
- saveSecurity(controller: string, request: PutSecurityDto): Promise<any>;
240
- getRealmRoles(): Promise<string[]>;
241
- static ɵfac: i0.ɵɵFactoryDeclaration<SecurityDataService, never>;
242
- static ɵprov: i0.ɵɵInjectableDeclaration<SecurityDataService>;
243
- }
244
-
245
194
  type RefreshCustomParams = {
246
195
  [key: string]: string | number | boolean;
247
196
  };
197
+ type AuthCsrfToken = {
198
+ token: string;
199
+ headerName: string;
200
+ };
248
201
  declare abstract class SecurityService {
249
202
  abstract auth(): void;
250
203
  abstract logout(): void;
@@ -254,10 +207,38 @@ declare abstract class SecurityService {
254
207
  abstract getCurrentUser(): any;
255
208
  abstract getCurrentUser$(): Observable<any>;
256
209
  abstract forceRefreshSession(customParams?: RefreshCustomParams, configId?: string): Observable<LoginResponse>;
210
+ abstract getCsrfToken(): Observable<AuthCsrfToken | null>;
257
211
  abstract isAdmin(): boolean;
258
212
  abstract authorize(configId?: string, authOptions?: AuthOptions): void;
259
213
  abstract payload: BehaviorSubject<any>;
260
214
  }
215
+ declare class BffSecurityService implements OnDestroy, SecurityService {
216
+ private readonly http;
217
+ private readonly authenticated;
218
+ private readonly currentUser;
219
+ private readonly csrfToken;
220
+ readonly payload: BehaviorSubject<any>;
221
+ auth(): void;
222
+ logout(): void;
223
+ isAuthenticated(): Observable<boolean>;
224
+ getAccessToken(): Observable<string>;
225
+ isTokenExpired(): Observable<boolean>;
226
+ getCurrentUser(): any;
227
+ getCurrentUser$(): Observable<any>;
228
+ forceRefreshSession(): Observable<LoginResponse>;
229
+ getCsrfToken(): Observable<AuthCsrfToken | null>;
230
+ isAdmin(): boolean;
231
+ authorize(): void;
232
+ ngOnDestroy(): void;
233
+ private applySession;
234
+ private createCurrentUser;
235
+ private splitDisplayName;
236
+ private applyAnonymousSession;
237
+ private createPostForm;
238
+ private buildUrl;
239
+ static ɵfac: i0.ɵɵFactoryDeclaration<BffSecurityService, never>;
240
+ static ɵprov: i0.ɵɵInjectableDeclaration<BffSecurityService>;
241
+ }
261
242
  /**
262
243
  * SecurityService extends OidcSecurityService to manage authentication,
263
244
  * token handling, and user role access in an Angular application.
@@ -306,6 +287,7 @@ declare class KeycloakSecurityService extends OidcSecurityService implements OnD
306
287
  */
307
288
  getAccessToken(configId?: string): Observable<string>;
308
289
  forceRefreshSession(customParams?: RefreshCustomParams, configId?: string): Observable<LoginResponse>;
290
+ getCsrfToken(): Observable<AuthCsrfToken | null>;
309
291
  /**
310
292
  * Indicates whether the current user has the 'admin' role.
311
293
  *
@@ -355,6 +337,64 @@ declare class KeycloakSecurityService extends OidcSecurityService implements OnD
355
337
  static ɵprov: i0.ɵɵInjectableDeclaration<KeycloakSecurityService>;
356
338
  }
357
339
 
340
+ type QueryParamsType = Record<string | number, any>;
341
+ type ResponseFormat = keyof Omit<Body, "body" | "bodyUsed">;
342
+ interface FullRequestParams extends Omit<RequestInit, "body"> {
343
+ /** set parameter to `true` for call `securityWorker` for this request */
344
+ secure?: boolean;
345
+ /** request path */
346
+ path: string;
347
+ /** content type of request body */
348
+ type?: ContentType;
349
+ /** query params */
350
+ query?: QueryParamsType;
351
+ /** format of response (i.e. response.json() -> format: "json") */
352
+ format?: ResponseFormat;
353
+ /** request body */
354
+ body?: unknown;
355
+ /** base url */
356
+ baseUrl?: string;
357
+ /** request cancellation token */
358
+ cancelToken?: CancelToken;
359
+ }
360
+ type RequestParams = Omit<FullRequestParams, "body" | "method" | "query" | "path">;
361
+ type CancelToken = Symbol | string | number;
362
+ declare enum ContentType {
363
+ Json = "application/json",
364
+ JsonApi = "application/vnd.api+json",
365
+ FormData = "multipart/form-data",
366
+ UrlEncoded = "application/x-www-form-urlencoded",
367
+ Text = "text/plain"
368
+ }
369
+ declare class HttpClient<SecurityDataType = unknown> {
370
+ protected securityService: SecurityService;
371
+ protected layoutService: LayoutService;
372
+ baseUrl: string;
373
+ private securityWorker?;
374
+ private abortControllers;
375
+ private customFetch;
376
+ private baseApiParams;
377
+ setSecurityData: (data: SecurityDataType | null) => void;
378
+ protected encodeQueryParam(key: string, value: any): string;
379
+ protected addQueryParam(query: QueryParamsType, key: string): string;
380
+ protected addArrayQueryParam(query: QueryParamsType, key: string): any;
381
+ protected toQueryString(rawQuery?: QueryParamsType): string;
382
+ protected addQueryParams(rawQuery?: QueryParamsType): string;
383
+ private contentFormatters;
384
+ protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams;
385
+ protected createAbortSignal: (cancelToken: CancelToken) => AbortSignal | undefined;
386
+ abortRequest: (cancelToken: CancelToken) => void;
387
+ request: <T = any, E = any>({ body, secure, path, type, query, format, baseUrl, cancelToken, ...params }: FullRequestParams) => Promise<T>;
388
+ private getCsrfRequestParams;
389
+ static ɵfac: i0.ɵɵFactoryDeclaration<HttpClient<any>, never>;
390
+ static ɵprov: i0.ɵɵInjectableDeclaration<HttpClient<any>>;
391
+ }
392
+
393
+ interface PutSecurityDto {
394
+ id: number;
395
+ securities: SecurityDto[];
396
+ }
397
+
358
398
  declare abstract class BaseModuleComponent<TBackendStoreSettings, TLocalStoreSettings> implements OnInit, OnDestroy {
359
399
  private static readonly readRight;
360
400
  private static readonly editRight;
@@ -363,8 +403,8 @@ declare abstract class BaseModuleComponent<TBackendStoreSettings, TLocalStoreSet
363
403
  private moduleInstanceReloadPromise;
364
404
  private rightsSubscription?;
365
405
  protected readonly destroyRef: DestroyRef;
366
- protected readonly securityDataService: SecurityDataService;
367
406
  protected readonly securityService: SecurityService;
407
+ protected readonly httpClient: HttpClient<any>;
368
408
  /**
369
409
  * Provide access to app settings
370
410
  */
@@ -383,11 +423,6 @@ declare abstract class BaseModuleComponent<TBackendStoreSettings, TLocalStoreSet
383
423
  * Provides access to messaging services.
384
424
  */
385
425
  readonly msgService: MsgService;
386
- /**
387
- * Provides access to base data service functionality.
388
- * @deprecated The method should not be used
389
- */
390
- readonly baseDataService: BaseDataService;
391
426
  /**
392
427
  * Provides access to translation functionality.
393
428
  */
@@ -522,6 +557,15 @@ declare abstract class BaseModuleComponent<TBackendStoreSettings, TLocalStoreSet
522
557
  private resetRightsState;
523
558
  private updateRightsState;
524
559
  protected hasSecurityRight(roles: string[], securitySettings: SecurityDto[], code: string): boolean;
560
+ protected getSecurity(controller?: string, id?: number | undefined): Promise<SecurityDto[]>;
561
+ protected saveSecurity(request: PutSecurityDto, controller?: string): Promise<unknown>;
562
+ protected getModuleInstanceSettings<TSettings>(controller?: string, id?: number | undefined): Promise<TSettings>;
563
+ protected saveModuleInstanceSettings<TSettings>(request: {
564
+ id: number;
565
+ settings: TSettings;
566
+ }, controller?: string): Promise<unknown>;
567
+ protected getMigrations<TMigration>(controller?: string): Promise<TMigration[]>;
568
+ protected applyModuleMigration(request: unknown, controller?: string): Promise<unknown>;
525
569
  private reloadModuleInstance;
526
570
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseModuleComponent<any, any>, never>;
527
571
  static ɵcmp: i0.ɵɵComponentDeclaration<BaseModuleComponent<any, any>, "ng-component", never, {}, {}, never, never, true, never>;
@@ -529,10 +573,11 @@ declare abstract class BaseModuleComponent<TBackendStoreSettings, TLocalStoreSet
529
573
 
530
574
  declare class SecurityComponent implements OnChanges, OnInit, OnDestroy {
531
575
  private readonly msgService;
532
- private readonly dataService;
533
576
  private readonly translateService;
577
+ private readonly httpClient;
578
+ private readonly securityApi;
534
579
  private securityLoadToken;
535
- securityData: any[];
580
+ securityData: SecurityDto[];
536
581
  id?: number;
537
582
  controller?: string;
538
583
  roles: string[];
@@ -542,6 +587,8 @@ declare class SecurityComponent implements OnChanges, OnInit, OnDestroy {
542
587
  saveClick(): void;
543
588
  saveKeyDown($event: KeyboardEvent): void;
544
589
  private loadSecurity;
590
+ private getSecurity;
591
+ private saveSecurity;
545
592
  static ɵfac: i0.ɵɵFactoryDeclaration<SecurityComponent, never>;
546
593
  static ɵcmp: i0.ɵɵComponentDeclaration<SecurityComponent, "security", never, { "id": { "alias": "id"; "required": false; }; "controller": { "alias": "controller"; "required": false; }; }, {}, never, never, true, never>;
547
594
  }
@@ -552,7 +599,7 @@ declare class SecurityComponent implements OnChanges, OnInit, OnDestroy {
552
599
  */
553
600
  declare class UserService {
554
601
  private readonly securityService;
555
- private readonly baseDataService;
602
+ private readonly userProfileApi;
556
603
  private requestedPhotoEmail;
557
604
  constructor();
558
605
  /**
@@ -580,6 +627,7 @@ declare class UserService {
580
627
  * @param image - The image Blob to be converted.
581
628
  */
582
629
  private createImageFromBlob;
630
+ private getInitials;
583
631
  static ɵfac: i0.ɵɵFactoryDeclaration<UserService, never>;
584
632
  static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
585
633
  }
@@ -600,8 +648,11 @@ declare class AppTopbar {
600
648
  userService: UserService;
601
649
  layoutService: LayoutService;
602
650
  logoService: LogoService;
651
+ private readonly confirmationService;
652
+ private readonly translateService;
603
653
  toggleDarkMode(): void;
604
654
  logoutKeyDown($event: KeyboardEvent): void;
655
+ confirmLogout(): void;
605
656
  static ɵfac: i0.ɵɵFactoryDeclaration<AppTopbar, never>;
606
657
  static ɵcmp: i0.ɵɵComponentDeclaration<AppTopbar, "app-topbar", never, {}, {}, never, never, true, never>;
607
658
  }
@@ -619,6 +670,17 @@ interface AddModuleInstanceDto {
619
670
  parentId?: number | null;
620
671
  viewRoles?: string[] | null;
621
672
  }
673
+ interface AuthCsrfTokenResponse {
674
+ token?: string | null;
675
+ headerName?: string | null;
676
+ }
677
+ interface AuthSessionResponse {
678
+ isAuthenticated?: boolean;
679
+ userName?: string | null;
680
+ displayName?: string | null;
681
+ email?: string | null;
682
+ roles?: string[] | null;
683
+ }
622
684
  interface EditModuleInstanceDto {
623
685
  moduleInstanceId?: number;
624
686
  label?: string | null;
@@ -627,6 +689,19 @@ interface EditModuleInstanceDto {
627
689
  viewRoles?: string[] | null;
628
690
  moduleId?: number | null;
629
691
  }
692
+ interface FolderModuleSettings {
693
+ html?: string | null;
694
+ }
695
+ interface GetKeycloakClientSettingsResponse {
696
+ authority?: string | null;
697
+ clientId?: string | null;
698
+ scope?: string | null;
699
+ responseType?: string | null;
700
+ useRefreshToken?: boolean;
701
+ silentRenew?: boolean;
702
+ logLevel?: number;
703
+ secureRoutes?: string[] | null;
704
+ }
630
705
  interface IframeModuleSettings {
631
706
  url?: string | null;
632
707
  }
@@ -659,6 +734,12 @@ interface ModuleSecurityDto {
659
734
  right: string | null;
660
735
  role: string | null;
661
736
  }
737
+ interface GetModuleInstanceSettingsParams {
738
+ id?: number;
739
+ }
740
+ interface GetModuleInstanceSettingsParams2 {
741
+ id?: number;
742
+ }
662
743
  interface DeleteModuleInstanceParams {
663
744
  id?: number;
664
745
  }
@@ -719,7 +800,7 @@ interface MenuChangeEvent {
719
800
  item: ContextMenuItemDto;
720
801
  }
721
802
 
722
- declare class MenuService extends BaseDataService {
803
+ declare class MenuService {
723
804
  private readonly menuSource;
724
805
  private readonly resetSource;
725
806
  private readonly titleService;
@@ -747,60 +828,6 @@ declare class MenuService extends BaseDataService {
747
828
  static ɵprov: i0.ɵɵInjectableDeclaration<MenuService>;
748
829
  }
749
830
 
750
- type QueryParamsType = Record<string | number, any>;
751
- type ResponseFormat = keyof Omit<Body, "body" | "bodyUsed">;
752
- interface FullRequestParams extends Omit<RequestInit, "body"> {
753
- /** set parameter to `true` for call `securityWorker` for this request */
754
- secure?: boolean;
755
- /** request path */
756
- path: string;
757
- /** content type of request body */
758
- type?: ContentType;
759
- /** query params */
760
- query?: QueryParamsType;
761
- /** format of response (i.e. response.json() -> format: "json") */
762
- format?: ResponseFormat;
763
- /** request body */
764
- body?: unknown;
765
- /** base url */
766
- baseUrl?: string;
767
- /** request cancellation token */
768
- cancelToken?: CancelToken;
769
- }
770
- type RequestParams = Omit<FullRequestParams, "body" | "method" | "query" | "path">;
771
- type CancelToken = Symbol | string | number;
772
- declare enum ContentType {
773
- Json = "application/json",
774
- JsonApi = "application/vnd.api+json",
775
- FormData = "multipart/form-data",
776
- UrlEncoded = "application/x-www-form-urlencoded",
777
- Text = "text/plain"
778
- }
779
- declare class HttpClient<SecurityDataType = unknown> {
780
- protected securityService: SecurityService;
781
- protected layoutService: LayoutService;
782
- baseUrl: string;
783
- private securityData;
784
- private securityWorker?;
785
- private abortControllers;
786
- private customFetch;
787
- private baseApiParams;
788
- constructor();
789
- setSecurityData: (data: SecurityDataType | null) => void;
790
- protected encodeQueryParam(key: string, value: any): string;
791
- protected addQueryParam(query: QueryParamsType, key: string): string;
792
- protected addArrayQueryParam(query: QueryParamsType, key: string): any;
793
- protected toQueryString(rawQuery?: QueryParamsType): string;
794
- protected addQueryParams(rawQuery?: QueryParamsType): string;
795
- private contentFormatters;
796
- protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams;
797
- protected createAbortSignal: (cancelToken: CancelToken) => AbortSignal | undefined;
798
- abortRequest: (cancelToken: CancelToken) => void;
799
- request: <T = any, E = any>({ body, secure, path, type, query, format, baseUrl, cancelToken, ...params }: FullRequestParams) => Promise<T>;
800
- static ɵfac: i0.ɵɵFactoryDeclaration<HttpClient<any>, never>;
801
- static ɵprov: i0.ɵɵInjectableDeclaration<HttpClient<any>>;
802
- }
803
-
804
831
  declare class MenuApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
805
832
  get: (params?: RequestParams) => Promise<ModuleInstanceDto[]>;
806
833
  getAdminMenu: (params?: RequestParams) => Promise<ModuleInstanceDto[]>;
@@ -829,6 +856,7 @@ declare class MenuItemCreateDialogComponent implements OnInit {
829
856
  label: string;
830
857
  selectIcon: string;
831
858
  saving: boolean;
859
+ get canSave(): boolean;
832
860
  ngOnInit(): Promise<void>;
833
861
  changeVisible(): void;
834
862
  save(): Promise<void>;
@@ -844,7 +872,7 @@ type PrimeIconOption = {
844
872
  };
845
873
  declare class MenuItemEditDialogComponent {
846
874
  private readonly menuService;
847
- private readonly securityDataService;
875
+ private readonly securityApi;
848
876
  private readonly msgService;
849
877
  visible: boolean;
850
878
  visibleChange: EventEmitter<boolean>;
@@ -921,6 +949,9 @@ declare class NotfoundComponent {
921
949
 
922
950
  declare class UnauthorizedComponent {
923
951
  protected readonly securityService: SecurityService;
952
+ private readonly route;
953
+ private readonly router;
954
+ protected signIn(): void;
924
955
  static ɵfac: i0.ɵɵFactoryDeclaration<UnauthorizedComponent, never>;
925
956
  static ɵcmp: i0.ɵɵComponentDeclaration<UnauthorizedComponent, "ng-component", never, {}, {}, never, never, true, never>;
926
957
  }
@@ -939,24 +970,12 @@ declare class ProfileComponent {
939
970
  static ɵcmp: i0.ɵɵComponentDeclaration<ProfileComponent, "user-profile", never, {}, {}, never, never, true, never>;
940
971
  }
941
972
 
942
- interface L10n {
943
- menu: string;
944
- all: string;
945
- profile: string;
946
- photo: string;
947
- usePhoto256x256Pixel: string;
948
- selectLanguage: string;
949
- moduleManagement: string;
950
- localization: string;
951
- goTo: string;
952
- }
953
973
  declare class ConfigComponent {
954
974
  private readonly layoutService;
955
975
  protected readonly l10nService: L10nService;
956
976
  protected readonly userService: UserService;
957
977
  protected readonly securityService: SecurityService;
958
978
  protected readonly menuService: MenuService;
959
- protected l10n: L10n;
960
979
  protected readonly dateFormats: string[];
961
980
  protected readonly timeFormats: string[];
962
981
  protected readonly allTimeZones: any[];
@@ -998,7 +1017,6 @@ declare class DbMigrationComponent extends BaseModuleComponent<NoSettingsDto, No
998
1017
  }
999
1018
 
1000
1019
  declare class AppModulesComponent implements OnInit {
1001
- protected dataService: BaseDataService;
1002
1020
  protected modules: ModuleDto[];
1003
1021
  protected msgService: MsgService;
1004
1022
  protected confirmationService: ConfirmationService;
@@ -1104,154 +1122,55 @@ declare class AppFloatingConfiguratorComponent {
1104
1122
  static ɵcmp: i0.ɵɵComponentDeclaration<AppFloatingConfiguratorComponent, "app-floating-configurator", never, {}, {}, never, never, true, never>;
1105
1123
  }
1106
1124
 
1107
- /** Attachment response DTO. */
1108
1125
  interface AttachmentDto {
1109
- /**
1110
- * Attachment identifier.
1111
- * @format int64
1112
- */
1113
1126
  attachmentId?: number;
1114
- /** Original file name. */
1115
1127
  fileName?: string | null;
1116
- /** MIME type of the file. */
1117
1128
  fileType?: string | null;
1118
- /**
1119
- * File size in bytes.
1120
- * @format int64
1121
- */
1122
1129
  fileSize?: number;
1123
- /**
1124
- * Upload timestamp.
1125
- * @format date-time
1126
- */
1127
1130
  uploadedAt?: Date;
1128
- /**
1129
- * File storage identifier.
1130
- * @format uuid
1131
- */
1132
1131
  storageFileId?: string;
1133
- /** Download URL for the file. */
1134
1132
  downloadUrl?: string | null;
1135
1133
  }
1136
- /** Comment response DTO. */
1137
1134
  interface CommentDto {
1138
- /**
1139
- * Comment identifier.
1140
- * @format int64
1141
- */
1142
1135
  commentId?: number;
1143
- /**
1144
- * Related entity type identifier.
1145
- * @format int64
1146
- */
1147
1136
  objectTypeId?: number;
1148
- /**
1149
- * Related entity identifier.
1150
- * @format int64
1151
- */
1152
1137
  objectId?: number;
1153
- /** Raw markdown comment content. */
1154
1138
  content?: string | null;
1155
- /**
1156
- * Author identifier.
1157
- * @format int64
1158
- */
1159
1139
  userId?: number;
1160
- /** Author display name. */
1161
1140
  authorDisplayName?: string | null;
1162
- /** Author e-mail. */
1163
1141
  authorEmail?: string | null;
1164
- /**
1165
- * Comment creation time.
1166
- * @format date-time
1167
- */
1168
1142
  createdAt?: Date;
1169
- /**
1170
- * Comment last update time.
1171
- * @format date-time
1172
- */
1173
1143
  updatedAt?: Date | null;
1174
- /** Whether the comment was edited. */
1175
1144
  isEdited?: boolean;
1176
- /**
1177
- * Number of edit history entries.
1178
- * @format int32
1179
- */
1180
1145
  historyCount?: number;
1181
- /** Whether the current user can edit this comment. */
1182
1146
  canEdit?: boolean;
1183
- /** Whether the current user can delete this comment. */
1184
1147
  canDelete?: boolean;
1185
- /** Attachments for the comment. */
1186
1148
  attachments?: AttachmentDto[] | null;
1187
- /** Reactions aggregated for the comment. */
1188
1149
  reactions?: CommentReactionDto[] | null;
1189
- /** Mentions for the comment. */
1190
1150
  mentions?: CommentMentionDto[] | null;
1191
1151
  }
1192
- /** Comment edit history response DTO. */
1193
1152
  interface CommentHistoryDto {
1194
- /**
1195
- * History entry identifier.
1196
- * @format int64
1197
- */
1198
1153
  commentEditHistoryId?: number;
1199
- /** Previous comment content. */
1200
1154
  oldContent?: string | null;
1201
- /** Updated comment content. */
1202
1155
  newContent?: string | null;
1203
- /**
1204
- * Editor identifier.
1205
- * @format int64
1206
- */
1207
1156
  editedByUserId?: number;
1208
- /** Editor display name. */
1209
1157
  editedByDisplayName?: string | null;
1210
- /**
1211
- * Time of edit.
1212
- * @format date-time
1213
- */
1214
1158
  editedAt?: Date;
1215
1159
  }
1216
- /** Mention response DTO. */
1217
1160
  interface CommentMentionDto {
1218
- /**
1219
- * Mentioned user identifier.
1220
- * @format int64
1221
- */
1222
1161
  mentionedUserId?: number;
1223
- /** Display name of the mentioned user. */
1224
1162
  displayName?: string | null;
1225
- /** E-mail of the mentioned user. */
1226
1163
  email?: string | null;
1227
- /**
1228
- * Position within the markdown text.
1229
- * @format int32
1230
- */
1231
1164
  position?: number;
1232
1165
  }
1233
- /** Aggregated reaction response DTO. */
1234
1166
  interface CommentReactionDto {
1235
- /** Emoji code. */
1236
1167
  emojiCode?: string | null;
1237
- /**
1238
- * Number of reactions with the same emoji.
1239
- * @format int32
1240
- */
1241
1168
  count?: number;
1242
- /** Whether the current user reacted with this emoji. */
1243
1169
  reactedByCurrentUser?: boolean;
1244
1170
  }
1245
- /** Mention candidate response DTO. */
1246
1171
  interface MentionUserDto {
1247
- /**
1248
- * User identifier.
1249
- * @format int64
1250
- */
1251
1172
  userId?: number;
1252
- /** Display name. */
1253
1173
  displayName?: string | null;
1254
- /** E-mail. */
1255
1174
  email?: string | null;
1256
1175
  }
1257
1176
 
@@ -1355,6 +1274,70 @@ declare class IframeModuleComponent extends BaseModuleComponent<IframeModuleSett
1355
1274
  static ɵcmp: i0.ɵɵComponentDeclaration<IframeModuleComponent, "ng-component", never, {}, {}, never, never, true, never>;
1356
1275
  }
1357
1276
 
1277
+ declare enum ImportanceLevel {
1278
+ Unspecified = "Unspecified",
1279
+ Low = "Low",
1280
+ Medium = "Medium",
1281
+ High = "High",
1282
+ Critical = "Critical"
1283
+ }
1284
+ interface UserNotificationCountResponse {
1285
+ count?: number;
1286
+ }
1287
+ interface UserNotificationDto {
1288
+ notificationUserId?: number;
1289
+ notificationId?: number;
1290
+ notificationTypeId?: number;
1291
+ notificationTypeName?: string | null;
1292
+ subject?: string | null;
1293
+ message?: string | null;
1294
+ importance?: ImportanceLevel;
1295
+ notificationChannelId?: number | null;
1296
+ sentAt?: Date | null;
1297
+ deliveredAt?: Date | null;
1298
+ readAt?: Date | null;
1299
+ createdAt?: Date;
1300
+ dataJson?: string | null;
1301
+ }
1302
+ interface UserNotificationListResponse {
1303
+ notifications?: UserNotificationDto[] | null;
1304
+ totalCount?: number;
1305
+ }
1306
+ interface GetNotificationByUserParams {
1307
+ skip?: number;
1308
+ take?: number;
1309
+ unreadOnly?: boolean;
1310
+ }
1311
+ interface MarkNotificationAsReadParams {
1312
+ id: number;
1313
+ }
1314
+ interface GetNotificationByIdParams {
1315
+ id?: number;
1316
+ }
1317
+
1318
+ declare class UserNotificationsComponent {
1319
+ private popover?;
1320
+ protected notifications: UserNotificationDto[];
1321
+ protected totalCount: number;
1322
+ protected skip: number;
1323
+ protected take: number;
1324
+ protected loading: boolean;
1325
+ protected readingNotificationId?: number;
1326
+ private readonly notificationApi;
1327
+ private readonly notificationService;
1328
+ private readonly msgService;
1329
+ private readonly translateService;
1330
+ protected readonly unreadNotificationCount: i0.Signal<number>;
1331
+ protected readonly unreadNotificationBadge: i0.Signal<string>;
1332
+ protected toggle(event: Event): Promise<void>;
1333
+ loadNotifications(): Promise<void>;
1334
+ onPageChange(event: PaginatorState): Promise<void>;
1335
+ markAsRead(notification: UserNotificationDto): Promise<void>;
1336
+ protected getImportanceSeverity(importance: string): 'success' | 'info' | 'warn' | 'danger' | 'secondary';
1337
+ static ɵfac: i0.ɵɵFactoryDeclaration<UserNotificationsComponent, never>;
1338
+ static ɵcmp: i0.ɵɵComponentDeclaration<UserNotificationsComponent, "app-user-notifications", never, {}, {}, never, never, true, never>;
1339
+ }
1340
+
1358
1341
  /**
1359
1342
  * A route guard that ensures the user is authenticated and has a valid access token.
1360
1343
  * If the access token is expired, it attempts to refresh the session.
@@ -1371,35 +1354,20 @@ declare class AuthGuardService {
1371
1354
  *
1372
1355
  * @returns {Observable<boolean | UrlTree>} A stream resolving to true (allow), or UrlTree (redirect).
1373
1356
  */
1374
- canActivate(): Observable<boolean | UrlTree>;
1375
- /**
1376
- * Attempts to refresh the session using the refresh token.
1377
- * If successful, allows route activation; otherwise, redirects to `/unauthorized`.
1378
- *
1379
- * @returns {boolean | UrlTree} A stream resolving to true or redirect UrlTree.
1380
- */
1381
- tryRefreshToken(): Observable<boolean | UrlTree>;
1357
+ canActivate(returnUrl?: string): Observable<boolean | UrlTree>;
1358
+ private getReturnUrl;
1382
1359
  static ɵfac: i0.ɵɵFactoryDeclaration<AuthGuardService, never>;
1383
1360
  static ɵprov: i0.ɵɵInjectableDeclaration<AuthGuardService>;
1384
1361
  }
1385
1362
 
1386
- declare class SecurityStorageService implements AbstractSecurityStorage {
1387
- read(key: string): string;
1388
- write(key: string, value: any): void;
1389
- remove(key: string): void;
1390
- clear(): void;
1391
- static ɵfac: i0.ɵɵFactoryDeclaration<SecurityStorageService, never>;
1392
- static ɵprov: i0.ɵɵInjectableDeclaration<SecurityStorageService>;
1393
- }
1394
-
1395
1363
  declare class NotificationService {
1396
1364
  private connection;
1397
1365
  private securityService;
1398
1366
  private msgService;
1399
- private frontendConfig;
1400
- private securityData;
1367
+ private notificationApi;
1368
+ unreadNotificationCount: i0.WritableSignal<number>;
1401
1369
  constructor();
1402
- private resolveHubUrl;
1370
+ loadUnreadNotificationCount(): void;
1403
1371
  static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
1404
1372
  static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
1405
1373
  }
@@ -1452,31 +1420,70 @@ declare function provideAppThemes(themes: AppThemePreset[], options?: ProvideApp
1452
1420
  declare function mergeWithDefaults(themes: AppThemePreset[]): EnvironmentProviders;
1453
1421
  declare function replaceDefaults(themes: AppThemePreset[]): EnvironmentProviders;
1454
1422
 
1455
- type OipFrontendAppMode = 'standalone' | 'distributed';
1456
- interface OipFrontendConfig {
1457
- appMode: OipFrontendAppMode;
1458
- apiBaseUrl?: string;
1459
- notificationHubUrl?: string;
1460
- }
1461
- declare const DEFAULT_OIP_FRONTEND_CONFIG: OipFrontendConfig;
1462
- declare const OIP_FRONTEND_CONFIG: InjectionToken<OipFrontendConfig>;
1423
+ declare function provideOip(): i0.EnvironmentProviders;
1463
1424
 
1464
1425
  declare const langIntercept: HttpInterceptorFn;
1465
1426
 
1466
- declare class SecurePipe implements PipeTransform {
1467
- private readonly http;
1468
- private readonly sanitizer;
1469
- transform(url: any): Observable<SafeUrl>;
1470
- static ɵfac: i0.ɵɵFactoryDeclaration<SecurePipe, never>;
1471
- static ɵpipe: i0.ɵɵPipeDeclaration<SecurePipe, "secure", true>;
1427
+ declare class FolderModuleApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
1428
+ getModuleInstanceSettings: (query: GetModuleInstanceSettingsParams, params?: RequestParams) => Promise<FolderModuleSettings>;
1429
+ static ɵfac: i0.ɵɵFactoryDeclaration<FolderModuleApi<any>, never>;
1430
+ static ɵprov: i0.ɵɵInjectableDeclaration<FolderModuleApi<any>>;
1472
1431
  }
1473
1432
 
1474
- /**
1475
- * Load keycloak settings from backend and save to sessionStorage
1476
- * @param httpClient
1477
- * @returns StsConfigHttpLoader
1478
- */
1479
- declare const httpLoaderAuthFactory: (httpClient: HttpClient$1) => StsConfigHttpLoader;
1433
+ declare class IframeModuleApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
1434
+ getModuleInstanceSettings: (query: GetModuleInstanceSettingsParams2, params?: RequestParams) => Promise<IframeModuleSettings>;
1435
+ static ɵfac: i0.ɵɵFactoryDeclaration<IframeModuleApi<any>, never>;
1436
+ static ɵprov: i0.ɵɵInjectableDeclaration<IframeModuleApi<any>>;
1437
+ }
1438
+
1439
+ declare class SecurityApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
1440
+ getCurrentAuthSession: (params?: RequestParams) => Promise<AuthSessionResponse>;
1441
+ createAuthSession: (params?: RequestParams) => Promise<any>;
1442
+ deleteAuthSession: (params?: RequestParams) => Promise<any>;
1443
+ getAuthCsrfToken: (params?: RequestParams) => Promise<AuthCsrfTokenResponse>;
1444
+ getKeycloakClientSettings: (params?: RequestParams) => Promise<GetKeycloakClientSettingsResponse>;
1445
+ getRealmRoles: (params?: RequestParams) => Promise<string[]>;
1446
+ static ɵfac: i0.ɵɵFactoryDeclaration<SecurityApi<any>, never>;
1447
+ static ɵprov: i0.ɵɵInjectableDeclaration<SecurityApi<any>>;
1448
+ }
1449
+
1450
+ interface UserSettingsDto {
1451
+ preset?: string | null;
1452
+ primary?: string | null;
1453
+ surface?: string | null;
1454
+ darkTheme?: boolean;
1455
+ menuMode?: string | null;
1456
+ language?: string | null;
1457
+ dateFormat?: string | null;
1458
+ timeFormat?: string | null;
1459
+ timeZone?: string | null;
1460
+ }
1461
+ interface GetUserPhotoParams {
1462
+ email?: string;
1463
+ }
1464
+ interface PostUserPhotoPayload {
1465
+ files?: File;
1466
+ }
1467
+
1468
+ declare class UserProfileApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
1469
+ getUserPhoto: (query: GetUserPhotoParams, params?: RequestParams) => Promise<File>;
1470
+ postUserPhoto: (data: PostUserPhotoPayload, params?: RequestParams) => Promise<void>;
1471
+ getSettings: (params?: RequestParams) => Promise<UserSettingsDto>;
1472
+ setSettings: (data: UserSettingsDto, params?: RequestParams) => Promise<void>;
1473
+ static ɵfac: i0.ɵɵFactoryDeclaration<UserProfileApi<any>, never>;
1474
+ static ɵprov: i0.ɵɵInjectableDeclaration<UserProfileApi<any>>;
1475
+ }
1476
+
1477
+ declare function convertToPrimeNgDateFormat(dateformat: string): string;
1478
+
1479
+ declare class NotificationApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
1480
+ getNotificationByUser: (query: GetNotificationByUserParams, params?: RequestParams) => Promise<UserNotificationListResponse>;
1481
+ getNotificationCountByUser: (params?: RequestParams) => Promise<UserNotificationCountResponse>;
1482
+ markNotificationAsRead: ({ id, ...query }: MarkNotificationAsReadParams, params?: RequestParams) => Promise<void>;
1483
+ getNotificationById: (query: GetNotificationByIdParams, params?: RequestParams) => Promise<UserNotificationDto>;
1484
+ static ɵfac: i0.ɵɵFactoryDeclaration<NotificationApi<any>, never>;
1485
+ static ɵprov: i0.ɵɵInjectableDeclaration<NotificationApi<any>>;
1486
+ }
1480
1487
 
1481
- export { APP_THEME_PRESETS, APP_THEME_PRESETS_MERGE_MODE, AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppLayoutComponent, AppModulesComponent, AppTopbar, AuthGuardService, BaseDataService, BaseModuleComponent, ConfigComponent, ContentType, DEFAULT_OIP_FRONTEND_CONFIG, DbMigrationComponent, DiscussionComponent, ErrorComponent, FooterComponent, HttpClient, IframeModuleComponent, KeycloakSecurityService, L10nService, LOGO_COMPONENT_TOKEN, LayoutService, LogoComponent, LogoService, MenuComponent, MenuService, MsgService, NotfoundComponent, NotificationService, OIP_FRONTEND_CONFIG, ProfileComponent, SecurePipe, SecurityComponent, SecurityDataService, SecurityService, SecurityStorageService, SidebarComponent, TableFilterService, TopBarService, UnauthorizedComponent, UserService, httpLoaderAuthFactory, langIntercept, mergeWithDefaults, provideAppThemes, provideLogoComponent, replaceDefaults };
1482
- export type { AppConfig, AppThemePreset, AppThemePresetMergeMode, LanguageDto, MenuChangeEvent, NoSettingsDto, OipFrontendAppMode, OipFrontendConfig, PutSecurityDto, RequestParams, SecurityDto, TopBarDto };
1488
+ export { APP_THEME_PRESETS, APP_THEME_PRESETS_MERGE_MODE, AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppLayoutComponent, AppModulesComponent, AppTopbar, AuthGuardService, BaseModuleComponent, BffSecurityService, ConfigComponent, ContentType, DbMigrationComponent, DiscussionComponent, ErrorComponent, FolderModuleApi, FooterComponent, HttpClient, IframeModuleApi, IframeModuleComponent, KeycloakSecurityService, L10nService, LOGO_COMPONENT_TOKEN, LayoutService, LogoComponent, LogoService, MenuComponent, MenuService, MsgService, NotfoundComponent, NotificationApi, NotificationService, ProfileComponent, SecurityApi, SecurityComponent, SecurityService, SidebarComponent, TableFilterService, TopBarService, UnauthorizedComponent, UserNotificationsComponent, UserProfileApi, UserService, convertToPrimeNgDateFormat, langIntercept, mergeWithDefaults, provideAppThemes, provideLogoComponent, provideOip, replaceDefaults };
1489
+ export type { AppConfig, AppThemePreset, AppThemePresetMergeMode, AuthCsrfToken, LanguageDto, MenuChangeEvent, NoSettingsDto, PutSecurityDto, RequestParams, SecurityDto, TopBarDto };