@openziti/ziti-console-lib 1.2.0 → 1.3.0

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,6 +1,6 @@
1
1
  import * as lottie_web from 'lottie-web';
2
2
  import * as i0 from '@angular/core';
3
- import { PipeTransform, EventEmitter, InjectionToken, ViewContainerRef, ElementRef, OnInit, DoCheck, OnDestroy, AfterViewInit, ChangeDetectorRef, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';
3
+ import { PipeTransform, EventEmitter, InjectionToken, ViewContainerRef, ElementRef, OnInit, DoCheck, OnDestroy, AfterViewInit, ChangeDetectorRef, OnChanges, SimpleChanges, TemplateRef, Injector } from '@angular/core';
4
4
  import * as _angular_platform_browser from '@angular/platform-browser';
5
5
  import { DomSanitizer } from '@angular/platform-browser';
6
6
  import * as rxjs from 'rxjs';
@@ -66,6 +66,7 @@ interface ExtensionService {
66
66
  listActions?: any[];
67
67
  consoleActionTriggered?: EventEmitter<any>;
68
68
  disabledComponents?: any[];
69
+ showApiCalls?: boolean;
69
70
  emitEvent?<TData, TResult>(event: ExtensionEvent<TData, TResult>): Promise<TResult | undefined>;
70
71
  extendOnInit(): void;
71
72
  extendAfterViewInits(extentionPoints: any): void;
@@ -254,7 +255,7 @@ declare class ChipsInputComponent implements ControlValueAccessor {
254
255
  onModelChange: EventEmitter<string[]>;
255
256
  onBlur: EventEmitter<FocusEvent>;
256
257
  keyup: EventEmitter<KeyboardEvent>;
257
- chipInput: ElementRef<HTMLInputElement>;
258
+ chipInput?: ElementRef<HTMLInputElement>;
258
259
  value: string[];
259
260
  disabled: boolean;
260
261
  focused: boolean;
@@ -505,6 +506,8 @@ declare abstract class SettingsServiceClass {
505
506
  port: number;
506
507
  portTLS: number;
507
508
  apiVersions: any[];
509
+ capabilities: string[];
510
+ edgeOidcPath: string | null;
508
511
  protocol: string;
509
512
  host: string;
510
513
  httpClient: HttpClient;
@@ -517,6 +520,9 @@ declare abstract class SettingsServiceClass {
517
520
  abstract initApiVersions(url: any): any;
518
521
  abstract loadSettings(): any;
519
522
  abstract hasSession(): any;
523
+ oidcAvailable(): boolean;
524
+ setOidcCapabilities(versionData: any): void;
525
+ clearOidcCapabilities(): void;
520
526
  abstract isHAEnabled(): boolean;
521
527
  abstract getHAControllers(): any[];
522
528
  abstract getActiveSessions(): Map<string, string>;
@@ -558,11 +564,18 @@ declare abstract class ZitiDataService {
558
564
  total: number;
559
565
  };
560
566
  constructor(logger: LoggerService, growler: GrowlerService, settingsService: SettingsServiceClass, httpClient: HttpClient, router: Router);
567
+ private readonly injector;
568
+ /** Resolved lazily to break the circular dependency: ManagementPermissionsService → ZITI_DATA_SERVICE → ManagementPermissionsService. */
569
+ private get managementPermissions();
570
+ /** Empty list response returned when the user lacks read permission for the requested resource. */
571
+ private static readonly EMPTY_READ_RESULT;
561
572
  abstract post(type: any, model: any, chained?: any, contentType?: any): Promise<any>;
562
573
  abstract put(type: any, model: any, id: any, chained?: any): Promise<any>;
563
574
  abstract patch(type: any, model: any, id: any, chained?: any): Promise<any>;
564
- abstract get(type: string, paging: any, filters: FilterObj[], url?: any, useClient?: any): Promise<any>;
565
- abstract getSubdata(entityType: string, id: any, dataType: string, paging?: any, contentType?: any, filters?: any): Promise<any>;
575
+ abstract doGet(type: string, paging: any, filters: FilterObj[], url?: any, useClient?: any): Promise<any>;
576
+ abstract doGetSubdata(entityType: string, id: any, dataType: string, paging?: any, contentType?: any, filters?: any): Promise<any>;
577
+ get(type: string, paging: any, filters: FilterObj[], url?: any, useClient?: any): Promise<any>;
578
+ getSubdata(entityType: string, id: any, dataType: string, paging?: any, contentType?: any, filters?: any): Promise<any>;
566
579
  abstract saveSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any>;
567
580
  abstract deleteSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any>;
568
581
  abstract delete(type: string, id: string): Promise<any>;
@@ -739,6 +752,49 @@ declare class SettingsService extends SettingsServiceClass {
739
752
  static ɵprov: i0.ɵɵInjectableDeclaration<SettingsService>;
740
753
  }
741
754
 
755
+ declare const SAVE_DENIED_BY_PERMISSION_TOOLTIP = "You do not have permission to save changes.";
756
+ /** Maps ZAC entityType strings to controller permission entity keys. */
757
+ declare const API_RESOURCE_TO_ENTITY_PERMISSION: Record<string, string>;
758
+ declare class ManagementPermissionsService {
759
+ private readonly settings;
760
+ private readonly zitiData;
761
+ readonly saveDeniedTooltip = "You do not have permission to save changes.";
762
+ private readonly permissionSet;
763
+ private identityIsAdmin;
764
+ /** Legacy controller, failed refresh, or empty permissions — keep prior UX (no gating). */
765
+ private unrestricted;
766
+ private readonly versionSubject;
767
+ readonly stateVersion$: rxjs.Observable<number>;
768
+ /** Coalesce overlapping current-identity HTTP calls (debounce + rapid settings churn). */
769
+ private identityLoadPromise;
770
+ constructor(settings: SettingsServiceClass, zitiData: ZitiDataService);
771
+ private bumpVersion;
772
+ clear(): void;
773
+ refresh(): Promise<void>;
774
+ private loadCurrentIdentity;
775
+ private fetchCurrentIdentity;
776
+ private applyLegacyMode;
777
+ isUnrestricted(): boolean;
778
+ private isAdmin;
779
+ isAdminReadonly(): boolean;
780
+ /** True once fetchCurrentIdentity() (or clear()) has run at least once — version > 0. */
781
+ get permissionsLoaded(): boolean;
782
+ private resolveEntityKey;
783
+ private hasEntityGrant;
784
+ private hasActionGrant;
785
+ canRead(apiResource: string): boolean;
786
+ canCreate(apiResource: string): boolean;
787
+ canUpdate(apiResource: string): boolean;
788
+ canDelete(apiResource: string): boolean;
789
+ /** Strict read-only form UI: no write permission for this resource (covers admin_readonly and missing entity grant). */
790
+ useStrictReadonlyFormUi(apiResource: string, isEdit: boolean): boolean;
791
+ isSaveDisabled(apiResource: string, isEdit: boolean): boolean;
792
+ isMenuActionAllowed(apiResource: string, action: string): boolean;
793
+ isTableHeaderActionAllowed(apiResource: string, action: string): boolean;
794
+ static ɵfac: i0.ɵɵFactoryDeclaration<ManagementPermissionsService, never>;
795
+ static ɵprov: i0.ɵɵInjectableDeclaration<ManagementPermissionsService>;
796
+ }
797
+
742
798
  declare class Entity {
743
799
  name: '';
744
800
  }
@@ -795,10 +851,19 @@ declare abstract class ProjectableForm extends ExtendableComponent implements Do
795
851
  ignoreDataChange: boolean;
796
852
  isScrolled: boolean;
797
853
  subscription: Subscription;
854
+ protected readonly managementPermissions: ManagementPermissionsService;
798
855
  formInit: boolean;
799
856
  formContainer: ElementRef;
857
+ get showApiCalls(): boolean;
800
858
  protected constructor(growlerService: GrowlerService, extService: ExtensionService, zitiService: ZitiDataService, router?: Router, route?: ActivatedRoute, location?: Location, settingsService?: SettingsService, dialogForm?: MatDialog);
801
859
  get isEdit(): boolean;
860
+ get formPermissionSaveDisabled(): boolean;
861
+ get formPermissionSaveTooltip(): string;
862
+ canReadRelated(apiResource: string): boolean;
863
+ get useStrictReadonlyForm(): boolean;
864
+ /** Blocks save from shortcuts/callbacks when the controller denies create/update for this resource. */
865
+ protected canSaveByPermissions(): boolean;
866
+ get zacManagementReadonlyHostClass(): boolean;
802
867
  ngAfterViewInit(skipFocus?: boolean): void;
803
868
  ngOnInit(): void;
804
869
  initBaseHref(): void;
@@ -975,6 +1040,7 @@ declare abstract class ListPageServiceClass {
975
1040
  DEFAULT_PAGING: any;
976
1041
  totalCount: number;
977
1042
  dataService: ZitiDataService;
1043
+ protected readonly managementPermissions: ManagementPermissionsService;
978
1044
  refreshData: (sort?: {
979
1045
  sortBy: string;
980
1046
  ordering: string;
@@ -982,6 +1048,11 @@ declare abstract class ListPageServiceClass {
982
1048
  selectedEntityId: String;
983
1049
  menuItems: any;
984
1050
  tableHeaderActions: any;
1051
+ /** Original menus/header actions before permission filtering (for singleton page services). */
1052
+ private menuItemsBaseline;
1053
+ private tableHeaderActionsBaseline;
1054
+ private menuTemplateSnapshot;
1055
+ private tableHeaderActionsSnapshot;
985
1056
  currentSettings: any;
986
1057
  dialogRef: any;
987
1058
  sideModalOpen: boolean;
@@ -1009,6 +1080,11 @@ declare abstract class ListPageServiceClass {
1009
1080
  };
1010
1081
  }) => string;
1011
1082
  constructor(settings: SettingsServiceClass, filterService: DataTableFilterService, csvDownloadService: CsvDownloadService, extensionService: ExtensionService, router?: Router);
1083
+ /**
1084
+ * Root-provided page services survive route changes; restore baseline menus before each table init
1085
+ * so permission filtering does not stack on already-filtered items.
1086
+ */
1087
+ resetMenusForInit(): void;
1012
1088
  initMenuActions(): void;
1013
1089
  addListItemExtensionActions(row: {
1014
1090
  actionList: any[];
@@ -1023,6 +1099,8 @@ declare abstract class ListPageServiceClass {
1023
1099
  getNetworkJwt(): Promise<any>;
1024
1100
  openEditForm(itemId?: string, basePath?: undefined): void;
1025
1101
  remToPx(remValue: number): number;
1102
+ capturePermissionSnapshots(): void;
1103
+ rebuildMenusAndHeaders(perm: ManagementPermissionsService): void;
1026
1104
  }
1027
1105
 
1028
1106
  type CallbackResults = {
@@ -1186,10 +1264,15 @@ declare abstract class ListPageComponent {
1186
1264
  gridObj: any;
1187
1265
  subscription: Subscription;
1188
1266
  private growlerSvc;
1267
+ protected readonly managementPermissions: ManagementPermissionsService;
1268
+ get headerBlockCreate(): boolean;
1269
+ get headerBlockDelete(): boolean;
1270
+ get headerBlockRead(): boolean;
1189
1271
  constructor(filterService: DataTableFilterService, svc: ListPageServiceClass, consoleEvents: ConsoleEventsService, dialogForm: MatDialog, extensionService?: ExtensionService);
1190
1272
  ngOnInit(): void;
1191
1273
  ngOnDestroy(): void;
1192
1274
  itemToggled(item: any): void;
1275
+ protected syncBulkDownloadHeaderAction(): void;
1193
1276
  updateSelectedItems(toggledItem?: any): void;
1194
1277
  refreshData(sort?: {
1195
1278
  sortBy: string;
@@ -1309,6 +1392,8 @@ declare class ConfigEditorComponent implements OnInit, AfterViewInit {
1309
1392
  lColorArray: string[];
1310
1393
  bColorArray: string[];
1311
1394
  hideConfigJSON: boolean;
1395
+ /** When true, block edits to embedded config form and JSON editor (e.g. global admin_readonly). */
1396
+ readOnly: boolean;
1312
1397
  configErrors: any;
1313
1398
  configErrorsChange: EventEmitter<any>;
1314
1399
  _configData: any;
@@ -1344,7 +1429,7 @@ declare class ConfigEditorComponent implements OnInit, AfterViewInit {
1344
1429
  jsonDataChanged(event: any): void;
1345
1430
  removeUndefinedProperties(data: any): any;
1346
1431
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfigEditorComponent, never>;
1347
- static ɵcmp: i0.ɵɵComponentDeclaration<ConfigEditorComponent, "lib-config-editor", never, { "configErrors": { "alias": "configErrors"; "required": false; }; "configData": { "alias": "configData"; "required": false; }; "showJsonView": { "alias": "showJsonView"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; }, { "configErrorsChange": "configErrorsChange"; "configDataChange": "configDataChange"; }, never, never, false, never>;
1432
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConfigEditorComponent, "lib-config-editor", never, { "readOnly": { "alias": "readOnly"; "required": false; }; "configErrors": { "alias": "configErrors"; "required": false; }; "configData": { "alias": "configData"; "required": false; }; "showJsonView": { "alias": "showJsonView"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; }, { "configErrorsChange": "configErrorsChange"; "configDataChange": "configDataChange"; }, never, never, false, never>;
1348
1433
  }
1349
1434
 
1350
1435
  declare class ConfigTypeFormComponent extends ProjectableForm implements OnInit, OnDestroy {
@@ -1401,11 +1486,15 @@ declare class ListPageHeaderComponent {
1401
1486
  tabs: any[];
1402
1487
  showAdd: boolean;
1403
1488
  hideAction: boolean;
1489
+ /** When true, hide the create (+) control even if showAdd is true. */
1490
+ blockCreate: boolean;
1491
+ /** When true, hide the bulk delete (-) control when rows are selected. */
1492
+ blockDelete: boolean;
1404
1493
  actionClicked: EventEmitter<string>;
1405
1494
  clickAction(value: string): void;
1406
1495
  tabSelected(tab: any): boolean;
1407
1496
  static ɵfac: i0.ɵɵFactoryDeclaration<ListPageHeaderComponent, never>;
1408
- static ɵcmp: i0.ɵɵComponentDeclaration<ListPageHeaderComponent, "lib-list-page-header", never, { "title": { "alias": "title"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; "showAdd": { "alias": "showAdd"; "required": false; }; "hideAction": { "alias": "hideAction"; "required": false; }; }, { "actionClicked": "actionClicked"; }, never, never, false, never>;
1497
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListPageHeaderComponent, "lib-list-page-header", never, { "title": { "alias": "title"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; "showAdd": { "alias": "showAdd"; "required": false; }; "hideAction": { "alias": "hideAction"; "required": false; }; "blockCreate": { "alias": "blockCreate"; "required": false; }; "blockDelete": { "alias": "blockDelete"; "required": false; }; }, { "actionClicked": "actionClicked"; }, never, never, false, never>;
1409
1498
  }
1410
1499
 
1411
1500
  declare class FilterBarComponent {
@@ -1748,6 +1837,10 @@ declare class DataTableComponent implements OnChanges, OnInit {
1748
1837
  noItemsClass: any;
1749
1838
  entityTypeName: string;
1750
1839
  showNoItemsAdd: boolean;
1840
+ /** When true, empty-state copy does not prompt to add (e.g. admin_readonly / no create permission). */
1841
+ noItemsReadonly: boolean;
1842
+ /** When true, shows "no permission to view" message instead of the table. */
1843
+ accessDenied: boolean;
1751
1844
  currentPage: number;
1752
1845
  noItemsImage: string;
1753
1846
  rowHeight: number;
@@ -1882,7 +1975,7 @@ declare class DataTableComponent implements OnChanges, OnInit {
1882
1975
  _handleTableScroll(scroller: any): void;
1883
1976
  remToPx(remValue: any): number;
1884
1977
  static ɵfac: i0.ɵɵFactoryDeclaration<DataTableComponent, never>;
1885
- static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent, "lib-data-table", never, { "rowData": { "alias": "rowData"; "required": false; }; "expandRowData": { "alias": "expandRowData"; "required": false; }; "collapseRowData": { "alias": "collapseRowData"; "required": false; }; "rowValidation": { "alias": "rowValidation"; "required": false; }; "isTimeSearchAvailable": { "alias": "isTimeSearchAvailable"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "tableId": { "alias": "tableId"; "required": false; }; "options": { "alias": "options"; "required": false; }; "validateService": { "alias": "validateService"; "required": false; }; "rowsToggled": { "alias": "rowsToggled"; "required": false; }; "tableRefreshCount": { "alias": "tableRefreshCount"; "required": false; }; "view": { "alias": "view"; "required": false; }; "serverSideDataSource": { "alias": "serverSideDataSource"; "required": false; }; "allowDownload": { "alias": "allowDownload"; "required": false; }; "startCount": { "alias": "startCount"; "required": false; }; "endCount": { "alias": "endCount"; "required": false; }; "totalCount": { "alias": "totalCount"; "required": false; }; "emptyMsg": { "alias": "emptyMsg"; "required": false; }; "filterApplied": { "alias": "filterApplied"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "headerActions": { "alias": "headerActions"; "required": false; }; "noItemsClass": { "alias": "noItemsClass"; "required": false; }; "entityTypeName": { "alias": "entityTypeName"; "required": false; }; "showNoItemsAdd": { "alias": "showNoItemsAdd"; "required": false; }; "currentPage": { "alias": "currentPage"; "required": false; }; "noItemsImage": { "alias": "noItemsImage"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "filterName": { "alias": "filterName"; "required": false; }; "filterColumn": { "alias": "filterColumn"; "required": false; }; "columnDefinitions": { "alias": "columnDefinitions"; "required": false; }; "refreshCount": { "alias": "refreshCount"; "required": false; }; }, { "actionRequested": "actionRequested"; "gridReady": "gridReady"; "dragStart": "dragStart"; "dragLeave": "dragLeave"; "pageChanged": "pageChanged"; }, never, never, false, never>;
1978
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent, "lib-data-table", never, { "rowData": { "alias": "rowData"; "required": false; }; "expandRowData": { "alias": "expandRowData"; "required": false; }; "collapseRowData": { "alias": "collapseRowData"; "required": false; }; "rowValidation": { "alias": "rowValidation"; "required": false; }; "isTimeSearchAvailable": { "alias": "isTimeSearchAvailable"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "tableId": { "alias": "tableId"; "required": false; }; "options": { "alias": "options"; "required": false; }; "validateService": { "alias": "validateService"; "required": false; }; "rowsToggled": { "alias": "rowsToggled"; "required": false; }; "tableRefreshCount": { "alias": "tableRefreshCount"; "required": false; }; "view": { "alias": "view"; "required": false; }; "serverSideDataSource": { "alias": "serverSideDataSource"; "required": false; }; "allowDownload": { "alias": "allowDownload"; "required": false; }; "startCount": { "alias": "startCount"; "required": false; }; "endCount": { "alias": "endCount"; "required": false; }; "totalCount": { "alias": "totalCount"; "required": false; }; "emptyMsg": { "alias": "emptyMsg"; "required": false; }; "filterApplied": { "alias": "filterApplied"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "headerActions": { "alias": "headerActions"; "required": false; }; "noItemsClass": { "alias": "noItemsClass"; "required": false; }; "entityTypeName": { "alias": "entityTypeName"; "required": false; }; "showNoItemsAdd": { "alias": "showNoItemsAdd"; "required": false; }; "noItemsReadonly": { "alias": "noItemsReadonly"; "required": false; }; "accessDenied": { "alias": "accessDenied"; "required": false; }; "currentPage": { "alias": "currentPage"; "required": false; }; "noItemsImage": { "alias": "noItemsImage"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "filterName": { "alias": "filterName"; "required": false; }; "filterColumn": { "alias": "filterColumn"; "required": false; }; "columnDefinitions": { "alias": "columnDefinitions"; "required": false; }; "refreshCount": { "alias": "refreshCount"; "required": false; }; }, { "actionRequested": "actionRequested"; "gridReady": "gridReady"; "dragStart": "dragStart"; "dragLeave": "dragLeave"; "pageChanged": "pageChanged"; }, never, never, false, never>;
1886
1979
  }
1887
1980
 
1888
1981
  declare class TableCellSelectComponent implements ICellRendererAngularComp {
@@ -2239,6 +2332,8 @@ declare class NoItemsComponent implements OnChanges {
2239
2332
  hasAdd: boolean;
2240
2333
  hiddenResults: boolean;
2241
2334
  isLoading: boolean;
2335
+ readonly: boolean;
2336
+ accessDenied: boolean;
2242
2337
  background: any;
2243
2338
  clickEmit: EventEmitter<any>;
2244
2339
  refresh: EventEmitter<any>;
@@ -2246,7 +2341,7 @@ declare class NoItemsComponent implements OnChanges {
2246
2341
  ngOnChanges(): void;
2247
2342
  iconClick(): void;
2248
2343
  static ɵfac: i0.ɵɵFactoryDeclaration<NoItemsComponent, never>;
2249
- static ɵcmp: i0.ɵɵComponentDeclaration<NoItemsComponent, "lib-no-items", never, { "image": { "alias": "image"; "required": false; }; "typeName": { "alias": "typeName"; "required": false; }; "isEmpty": { "alias": "isEmpty"; "required": false; }; "hasAdd": { "alias": "hasAdd"; "required": false; }; "hiddenResults": { "alias": "hiddenResults"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; }, { "clickEmit": "clickEmit"; "refresh": "refresh"; }, never, never, false, never>;
2344
+ static ɵcmp: i0.ɵɵComponentDeclaration<NoItemsComponent, "lib-no-items", never, { "image": { "alias": "image"; "required": false; }; "typeName": { "alias": "typeName"; "required": false; }; "isEmpty": { "alias": "isEmpty"; "required": false; }; "hasAdd": { "alias": "hasAdd"; "required": false; }; "hiddenResults": { "alias": "hiddenResults"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "accessDenied": { "alias": "accessDenied"; "required": false; }; }, { "clickEmit": "clickEmit"; "refresh": "refresh"; }, never, never, false, never>;
2250
2345
  }
2251
2346
 
2252
2347
  declare class SideModalComponent implements OnInit {
@@ -2273,6 +2368,8 @@ declare class FormHeaderComponent implements OnChanges {
2273
2368
  moreActionsText: string;
2274
2369
  showHeaderToggle: boolean;
2275
2370
  showHeaderButton: boolean;
2371
+ /** Hide save / more-actions / multi-save and retitle Edit→View for global admin_readonly without write grants. */
2372
+ strictReadonlyUi: boolean;
2276
2373
  multiActions: any[];
2277
2374
  formViewChange: EventEmitter<string>;
2278
2375
  actionRequested: EventEmitter<any>;
@@ -2286,6 +2383,7 @@ declare class FormHeaderComponent implements OnChanges {
2286
2383
  showActionsDropDown: boolean;
2287
2384
  constructor();
2288
2385
  ngOnChanges(changes: SimpleChanges): void;
2386
+ get displayTitle(): string;
2289
2387
  get hasMoreActions(): boolean;
2290
2388
  actionClicked(event: any): void;
2291
2389
  requestAction(action: any): void;
@@ -2294,7 +2392,7 @@ declare class FormHeaderComponent implements OnChanges {
2294
2392
  get hasMultiActions(): boolean;
2295
2393
  get headerBadges(): any;
2296
2394
  static ɵfac: i0.ɵɵFactoryDeclaration<FormHeaderComponent, never>;
2297
- static ɵcmp: i0.ɵɵComponentDeclaration<FormHeaderComponent, "lib-form-header", never, { "data": { "alias": "data"; "required": false; }; "badges": { "alias": "badges"; "required": false; }; "title": { "alias": "title"; "required": false; }; "moreActions": { "alias": "moreActions"; "required": false; }; "formView": { "alias": "formView"; "required": false; }; "saveDisabled": { "alias": "saveDisabled"; "required": false; }; "saveTooltip": { "alias": "saveTooltip"; "required": false; }; "actionButtonText": { "alias": "actionButtonText"; "required": false; }; "moreActionsText": { "alias": "moreActionsText"; "required": false; }; "showHeaderToggle": { "alias": "showHeaderToggle"; "required": false; }; "showHeaderButton": { "alias": "showHeaderButton"; "required": false; }; "multiActions": { "alias": "multiActions"; "required": false; }; }, { "formViewChange": "formViewChange"; "actionRequested": "actionRequested"; "multiActionRequested": "multiActionRequested"; }, never, never, false, never>;
2395
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormHeaderComponent, "lib-form-header", never, { "data": { "alias": "data"; "required": false; }; "badges": { "alias": "badges"; "required": false; }; "title": { "alias": "title"; "required": false; }; "moreActions": { "alias": "moreActions"; "required": false; }; "formView": { "alias": "formView"; "required": false; }; "saveDisabled": { "alias": "saveDisabled"; "required": false; }; "saveTooltip": { "alias": "saveTooltip"; "required": false; }; "actionButtonText": { "alias": "actionButtonText"; "required": false; }; "moreActionsText": { "alias": "moreActionsText"; "required": false; }; "showHeaderToggle": { "alias": "showHeaderToggle"; "required": false; }; "showHeaderButton": { "alias": "showHeaderButton"; "required": false; }; "strictReadonlyUi": { "alias": "strictReadonlyUi"; "required": false; }; "multiActions": { "alias": "multiActions"; "required": false; }; }, { "formViewChange": "formViewChange"; "actionRequested": "actionRequested"; "multiActionRequested": "multiActionRequested"; }, never, never, false, never>;
2298
2396
  }
2299
2397
 
2300
2398
  declare class FormFieldContainerComponent {
@@ -2615,6 +2713,8 @@ declare class FilterSelectComponent implements ControlValueAccessor, OnDestroy {
2615
2713
  matSelect?: MatSelect;
2616
2714
  optionTemplate?: FilterSelectOptionTemplateDirective;
2617
2715
  triggerTemplate?: FilterSelectTriggerTemplateDirective;
2716
+ /** Combined with ControlValueAccessor disabled state (e.g. disable mat-select when parent form is read-only). */
2717
+ disableControl: boolean;
2618
2718
  value: any;
2619
2719
  disabled: boolean;
2620
2720
  filterText: string;
@@ -2646,9 +2746,10 @@ declare class FilterSelectComponent implements ControlValueAccessor, OnDestroy {
2646
2746
  get isValueEmpty(): boolean;
2647
2747
  getOptionLabel(option: any): any;
2648
2748
  getOptionValue(option: any): any;
2749
+ get selectDisabled(): boolean;
2649
2750
  trackByOption: (_: number, option: any) => any;
2650
2751
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterSelectComponent, never>;
2651
- static ɵcmp: i0.ɵɵComponentDeclaration<FilterSelectComponent, "lib-filter-select", never, { "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "optionLabel": { "alias": "optionLabel"; "required": false; }; "optionValue": { "alias": "optionValue"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "localFilter": { "alias": "localFilter"; "required": false; }; "openOnFocus": { "alias": "openOnFocus"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; }, { "selectionChange": "selectionChange"; "filterChange": "filterChange"; }, ["optionTemplate", "triggerTemplate"], never, false, never>;
2752
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterSelectComponent, "lib-filter-select", never, { "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "optionLabel": { "alias": "optionLabel"; "required": false; }; "optionValue": { "alias": "optionValue"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "localFilter": { "alias": "localFilter"; "required": false; }; "openOnFocus": { "alias": "openOnFocus"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "disableControl": { "alias": "disableControl"; "required": false; }; }, { "selectionChange": "selectionChange"; "filterChange": "filterChange"; }, ["optionTemplate", "triggerTemplate"], never, false, never>;
2652
2753
  }
2653
2754
 
2654
2755
  declare class OverridesComponent implements OnInit {
@@ -3129,6 +3230,8 @@ declare class NetworkVisualizerComponent extends VisualizerServiceClass implemen
3129
3230
 
3130
3231
  declare class CustomTagsComponent implements OnInit, OnChanges {
3131
3232
  tags: any;
3233
+ /** View-only: no add/remove/edit; show name/value as text (e.g. global admin_readonly). */
3234
+ readOnly: boolean;
3132
3235
  tagsChange: EventEmitter<any>;
3133
3236
  tagsArray: any;
3134
3237
  newTagName: string;
@@ -3159,7 +3262,7 @@ declare class CustomTagsComponent implements OnInit, OnChanges {
3159
3262
  tagValueChanged(tag: any, event?: any): void;
3160
3263
  validate(event?: any): void;
3161
3264
  static ɵfac: i0.ɵɵFactoryDeclaration<CustomTagsComponent, never>;
3162
- static ɵcmp: i0.ɵɵComponentDeclaration<CustomTagsComponent, "lib-custom-tags", never, { "tags": { "alias": "tags"; "required": false; }; }, { "tagsChange": "tagsChange"; }, never, never, false, never>;
3265
+ static ɵcmp: i0.ɵɵComponentDeclaration<CustomTagsComponent, "lib-custom-tags", never, { "tags": { "alias": "tags"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; }, { "tagsChange": "tagsChange"; }, never, never, false, never>;
3163
3266
  }
3164
3267
 
3165
3268
  declare class ServicePolicy {
@@ -3466,6 +3569,7 @@ declare class ServiceFormComponent extends ProjectableForm implements OnInit, On
3466
3569
  configFilterChanged(filterText: string): void;
3467
3570
  configTypeChanged($event: any): void;
3468
3571
  get showConfigData(): boolean;
3572
+ get canCreateConfig(): boolean;
3469
3573
  attachConfig(): void;
3470
3574
  captureConfigEnterEvent(event: any): void;
3471
3575
  protected deleteServiceWithOrphans(): Promise<any>;
@@ -3683,6 +3787,8 @@ declare class SimpleServiceComponent extends ProjectableForm {
3683
3787
  entityIdInit: boolean;
3684
3788
  set entityId(id: String);
3685
3789
  get entityId(): String;
3790
+ get formPermissionSaveDisabled(): boolean;
3791
+ get formPermissionSaveTooltip(): string;
3686
3792
  ngOnInit(): void;
3687
3793
  formDataSet: boolean;
3688
3794
  initFormData(): Promise<[void, void]>;
@@ -3708,6 +3814,7 @@ declare class SimpleServiceComponent extends ProjectableForm {
3708
3814
  interceptPortChanged($event: any): void;
3709
3815
  hostProtocolsChanged($event: any): void;
3710
3816
  save(refresh?: any): Promise<void>;
3817
+ markEntityError(summaryData: any, type: string, subtype?: string): void;
3711
3818
  showSummary(): any;
3712
3819
  checkNameConflicts(): Promise<boolean>;
3713
3820
  showConflictWarning(conflictData: any): void;
@@ -4490,6 +4597,10 @@ declare abstract class LoginServiceClass {
4490
4597
  serviceUrl: string;
4491
4598
  loginInProgress: boolean;
4492
4599
  callbackRoute: string;
4600
+ pendingMfa: boolean;
4601
+ mfaAuthQueries: any[];
4602
+ completeMfaAuth(code: string): Promise<any>;
4603
+ cancelMfaAuth(): void;
4493
4604
  abstract init(): any;
4494
4605
  abstract login(prefix: string, url: string, username: string, password: string, doNav?: any, type?: any, token?: any, isTest?: any): any;
4495
4606
  abstract observeLogin(serviceUrl: string, username: string, password: string, doNav?: any, type?: any, token?: any, isTest?: any): any;
@@ -7608,8 +7719,8 @@ declare class NodeDataService extends ZitiDataService {
7608
7719
  post(type: any, model: any, chained?: boolean): Promise<any>;
7609
7720
  put(type: any, model: any, id: any, chained?: boolean): Promise<any>;
7610
7721
  patch(type: any, model: any, id: any, chained?: boolean): Promise<any>;
7611
- get(type: string, paging: any, filters?: FilterObj[], url?: any): Promise<any>;
7612
- getSubdata(entityType: string, id: any, dataType: string): Promise<any>;
7722
+ doGet(type: string, paging: any, filters?: FilterObj[], url?: any): Promise<any>;
7723
+ doGetSubdata(entityType: string, id: any, dataType: string): Promise<any>;
7613
7724
  saveSubdata(entityType: string, id: any, dataType: string, data: any): Promise<any>;
7614
7725
  resetEnrollment(id: string, date: any): Promise<any>;
7615
7726
  deleteEnrollment(enrollmentId: string): Promise<any>;
@@ -7640,8 +7751,8 @@ declare class ZitiControllerDataService extends ZitiDataService {
7640
7751
  post(type: any, model: any, chained?: boolean, contentType?: any): Promise<any>;
7641
7752
  put(type: any, model: any, id: any, chained?: boolean): Promise<any>;
7642
7753
  patch(type: any, model: any, id: any, chained?: boolean): Promise<any>;
7643
- get(type: string, paging: any, filters?: FilterObj[], url?: any, useClient?: any): Promise<any>;
7644
- getSubdata(entityType: string, id: any, dataType: string, paging?: any, contentType?: any, filters?: any[]): Promise<any>;
7754
+ doGet(type: string, paging: any, filters?: FilterObj[], url?: any, useClient?: any): Promise<any>;
7755
+ doGetSubdata(entityType: string, id: any, dataType: string, paging?: any, contentType?: any, filters?: any[]): Promise<any>;
7645
7756
  saveSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any>;
7646
7757
  deleteSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any>;
7647
7758
  resetEnrollment(id: string, date: any): Promise<any>;
@@ -7693,6 +7804,115 @@ declare class DeactivateGuardService implements CanDeactivate<CanComponentDeacti
7693
7804
  static ɵprov: i0.ɵɵInjectableDeclaration<DeactivateGuardService>;
7694
7805
  }
7695
7806
 
7807
+ declare class InsecureContextError extends Error {
7808
+ constructor();
7809
+ }
7810
+ declare function randomUrlSafeString(byteLen?: number): string;
7811
+ declare function pkceChallengeS256(verifier: string): Promise<string>;
7812
+ declare function decodeJwtPayload(token: string): any | null;
7813
+ declare function jwtExpMs(token: string): number | undefined;
7814
+ declare function jwtIatMs(token: string): number | undefined;
7815
+
7816
+ declare const OIDC_CLIENT_ID = "openziti";
7817
+ declare const OIDC_CLIENT_ID_LEGACY = "native";
7818
+ interface OidcTokenSet {
7819
+ accessToken: string;
7820
+ refreshToken?: string;
7821
+ idToken?: string;
7822
+ expiresAt: number;
7823
+ refreshExpiresAt?: number;
7824
+ clientId: string;
7825
+ }
7826
+ interface OidcAuthContext {
7827
+ controllerUrl: string;
7828
+ oidcBase: string;
7829
+ authRequestId: string;
7830
+ state: string;
7831
+ nonce: string;
7832
+ codeVerifier: string;
7833
+ redirectUri: string;
7834
+ clientId: string;
7835
+ }
7836
+ type OidcLoginStep = {
7837
+ status: 'code';
7838
+ code: string;
7839
+ } | {
7840
+ status: 'totpRequired';
7841
+ authQueries: any[];
7842
+ } | {
7843
+ status: 'error';
7844
+ error: any;
7845
+ };
7846
+ declare class OidcEnvironmentalError extends Error {
7847
+ causedBy?: any;
7848
+ constructor(message: string, causedBy?: any);
7849
+ }
7850
+ declare class OidcSessionUnrecoverableError extends Error {
7851
+ reason?: string;
7852
+ constructor(message: string, reason?: string);
7853
+ }
7854
+ /**
7855
+ * Drives the ziti controller's native OIDC provider (auth code + PKCE) programmatically,
7856
+ * the same way the ziti SDKs do, so the console keeps its own login UI.
7857
+ *
7858
+ * Uses fetch rather than HttpClient: the auth request id and authorization code must be
7859
+ * parsed from Response.url after redirect-following (the controller's CORS config does not
7860
+ * expose the auth-request-id/totp-required headers cross-origin), and these requests must
7861
+ * bypass the app's HTTP interceptors.
7862
+ */
7863
+ declare class ZitiOidcService {
7864
+ private inflightRefresh;
7865
+ buildRedirectUri(): string;
7866
+ startAuthRequest(controllerUrl: string, options?: {
7867
+ redirectUri?: string;
7868
+ oidcPath?: string;
7869
+ }): Promise<OidcAuthContext>;
7870
+ private authorize;
7871
+ loginWithPassword(ctx: OidcAuthContext, username: string, password: string): Promise<OidcLoginStep>;
7872
+ loginWithExtJwt(ctx: OidcAuthContext, extToken: string): Promise<OidcLoginStep>;
7873
+ loginWithCert(ctx: OidcAuthContext): Promise<OidcLoginStep>;
7874
+ submitTotp(ctx: OidcAuthContext, code: string): Promise<OidcLoginStep>;
7875
+ private submitLogin;
7876
+ exchangeCode(ctx: OidcAuthContext, code: string): Promise<OidcTokenSet>;
7877
+ refreshTokens(controllerUrl: string, refreshToken: string, clientId?: string, oidcPath?: string): Promise<OidcTokenSet>;
7878
+ private doRefresh;
7879
+ revokeToken(controllerUrl: string, token: string, hint: 'refresh_token' | 'access_token', clientId?: string, oidcPath?: string): Promise<void>;
7880
+ private toTokenSet;
7881
+ private normalizeUrl;
7882
+ static ɵfac: i0.ɵɵFactoryDeclaration<ZitiOidcService, never>;
7883
+ static ɵprov: i0.ɵɵInjectableDeclaration<ZitiOidcService>;
7884
+ }
7885
+
7886
+ /**
7887
+ * Keeps OIDC sessions alive by refreshing the access token before it expires, and
7888
+ * self-monitors for sessions that can no longer be renewed (refresh token expired or
7889
+ * revoked), logging the user out and returning them to the login page.
7890
+ */
7891
+ declare class SessionRefreshService {
7892
+ private settingsService;
7893
+ private oidcService;
7894
+ private growlerService;
7895
+ private injector;
7896
+ private refreshTimer;
7897
+ private monitorInterval;
7898
+ private retryDelayMs;
7899
+ private running;
7900
+ private readonly onWake;
7901
+ private readonly onStorage;
7902
+ constructor(settingsService: SettingsServiceClass, oidcService: ZitiOidcService, growlerService: GrowlerService, injector: Injector);
7903
+ start(): void;
7904
+ stop(): void;
7905
+ refreshNow(): Promise<boolean>;
7906
+ private persistTokens;
7907
+ private scheduleNextRefresh;
7908
+ private scheduleRetry;
7909
+ private checkSessionState;
7910
+ private hasOidcSession;
7911
+ private handleUnrecoverable;
7912
+ static ɵfac: i0.ɵɵFactoryDeclaration<SessionRefreshService, never>;
7913
+ static ɵprov: i0.ɵɵInjectableDeclaration<SessionRefreshService>;
7914
+ }
7915
+
7696
7916
  declare const ZITI_URLS: InjectionToken<string>;
7697
7917
  declare const ZITI_NAVIGATOR: InjectionToken<string>;
7698
7918
  declare const DEFAULT_APP_CONFIG: InjectionToken<string>;
@@ -7701,6 +7921,6 @@ declare const ZAC_VERSION: {
7701
7921
  version: string;
7702
7922
  };
7703
7923
 
7704
- export { APISessionFormComponent, APISessionsPageComponent, ApiSessionsPageService, AttributesComponent, AuthPoliciesPageComponent, AuthPoliciesPageService, AuthPolicyFormComponent, AuthPolicyFormService, AuthService, BooleanToggleInputComponent, CallbackComponent, CardListComponent, CertificateAuthoritiesPageComponent, CertificateAuthoritiesPageService, CertificateAuthorityFormComponent, CertificateAuthorityFormService, CheckboxListInputComponent, ChipsInputComponent, ConfigEditorComponent, ConfigTypeFormComponent, ConfigTypesPageComponent, ConfigurationFormComponent, ConfigurationService, ConfigurationsPageComponent, CsvDownloadService, DEACTIVATE_GUARD, DEFAULT_APP_CONFIG, DataTableFilterService, DeactivateGuardService, EDGE_ROUTER_EXTENSION_SERVICE, EDGE_ROUTER_POLICY_EXTENSION_SERVICE, EdgeRouter, EdgeRouterFormComponent, EdgeRouterFormService, EdgeRouterPoliciesPageComponent, EdgeRouterPoliciesPageService, EdgeRouterPolicyFormComponent, EdgeRouterPolicyFormService, EdgeRoutersPageComponent, EdgeRoutersPageService, Entity, ExtendableComponent, ExtensionsNoopService, FilterSelectComponent, FilterSelectOptionTemplateDirective, FilterSelectTriggerTemplateDirective, FormFieldContainerComponent, FormFieldToggleComponent, FormHeaderComponent, GeolocateComponent, GrowlerComponent, GrowlerModel, GrowlerModule, GrowlerService, HAControllerService, HaStatusIndicatorComponent, HeaderBarComponent, IDENTITY_EXTENSION_SERVICE, IdentitiesPageComponent, IdentitiesPageService, Identity$1 as Identity, IdentityFormComponent, IdentityFormService, IdentityServicePathComponent, JsonViewComponent, JwtSignerFormComponent, JwtSignerFormService, JwtSignersPageComponent, JwtSignersPageService, KEY_CODES, ListPageComponent, ListPageServiceClass, LoadingIndicatorComponent, LoggerService, LoginDialogComponent, LoginServiceClass, NetworkVisualizerComponent, NodeDataService, NoopLoginService, NoopTabInterceptorService, NumberInputComponent, ObjectComponent, OpenZitiConsoleLibModule, PasswordInputComponent, PostureCheckFormComponent, PostureChecksPageComponent, PostureChecksPageService, PreviewListComponent, ProfileComponent, ProgressMeterComponent, ProgressMeterStep, ProgressWizardComponent, ProgressWizardStep, ProjectableForm, ProtocolAddressPortInputComponent, QuickAddComponent, ResetEnrollmentService, SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE, SERVICE_EXTENSION_SERVICE, SERVICE_POLICY_EXTENSION_SERVICE, SETTINGS_SERVICE, SHAREDZ_EXTENSION, SelectorInputComponent, ServiceEdgeRouterPoliciesPageComponent, ServiceEdgeRouterPoliciesPageService, ServiceEdgeRouterPolicyFormComponent, ServiceEdgeRouterPolicyFormService, ServiceFormComponent, ServiceFormService, ServicePoliciesPageComponent, ServicePoliciesPageService, ServicePolicyFormComponent, ServicePolicyFormService, ServicesPageComponent, ServicesPageService, Session, SessionFormComponent, SessionsPageComponent, SessionsPageService, SettingsComponent, SettingsService, SettingsServiceClass, SideModalComponent, SideNavbarComponent, SideNavigatorComponent, SimpleServiceComponent, StringInputComponent, TabNameService, TagSelectorComponent, TerminatorFormComponent, TerminatorFormService, TerminatorsPageComponent, TerminatorsPageService, TextListInputComponent, TransitRouterFormComponent, TransitRouterFormService, TransitRoutersPageComponent, TransitRoutersPageService, ValidationService, VerifyCertificateComponent, VisualizerServiceClass, ZAC_LOGIN_SERVICE, ZAC_VERSION, ZITI_DATA_SERVICE, ZITI_DOMAIN_CONTROLLER, ZITI_NAVIGATOR, ZITI_TAB_OVERRIDES, ZITI_URLS, ZacRoutingModule, ZitiControllerDataService, ZitiDataService, playerFactory };
7705
- export type { CanComponentDeactivate, ExtensionEvent, ExtensionEventType, ExtensionService, FilterObj, HAClusterStatus, HAController, TabInterceptorService, ZitiDomainControllerService, ZitiSessionData };
7924
+ export { APISessionFormComponent, APISessionsPageComponent, API_RESOURCE_TO_ENTITY_PERMISSION, ApiSessionsPageService, AttributesComponent, AuthPoliciesPageComponent, AuthPoliciesPageService, AuthPolicyFormComponent, AuthPolicyFormService, AuthService, BooleanToggleInputComponent, CallbackComponent, CardListComponent, CertificateAuthoritiesPageComponent, CertificateAuthoritiesPageService, CertificateAuthorityFormComponent, CertificateAuthorityFormService, CheckboxListInputComponent, ChipsInputComponent, ConfigEditorComponent, ConfigTypeFormComponent, ConfigTypesPageComponent, ConfigurationFormComponent, ConfigurationService, ConfigurationsPageComponent, CsvDownloadService, DEACTIVATE_GUARD, DEFAULT_APP_CONFIG, DataTableFilterService, DeactivateGuardService, EDGE_ROUTER_EXTENSION_SERVICE, EDGE_ROUTER_POLICY_EXTENSION_SERVICE, EdgeRouter, EdgeRouterFormComponent, EdgeRouterFormService, EdgeRouterPoliciesPageComponent, EdgeRouterPoliciesPageService, EdgeRouterPolicyFormComponent, EdgeRouterPolicyFormService, EdgeRoutersPageComponent, EdgeRoutersPageService, Entity, ExtendableComponent, ExtensionsNoopService, FilterSelectComponent, FilterSelectOptionTemplateDirective, FilterSelectTriggerTemplateDirective, FormFieldContainerComponent, FormFieldToggleComponent, FormHeaderComponent, GeolocateComponent, GrowlerComponent, GrowlerModel, GrowlerModule, GrowlerService, HAControllerService, HaStatusIndicatorComponent, HeaderBarComponent, IDENTITY_EXTENSION_SERVICE, IdentitiesPageComponent, IdentitiesPageService, Identity$1 as Identity, IdentityFormComponent, IdentityFormService, IdentityServicePathComponent, InsecureContextError, JsonViewComponent, JwtSignerFormComponent, JwtSignerFormService, JwtSignersPageComponent, JwtSignersPageService, KEY_CODES, ListPageComponent, ListPageServiceClass, LoadingIndicatorComponent, LoggerService, LoginDialogComponent, LoginServiceClass, ManagementPermissionsService, NetworkVisualizerComponent, NodeDataService, NoopLoginService, NoopTabInterceptorService, NumberInputComponent, OIDC_CLIENT_ID, OIDC_CLIENT_ID_LEGACY, ObjectComponent, OidcEnvironmentalError, OidcSessionUnrecoverableError, OpenZitiConsoleLibModule, PasswordInputComponent, PostureCheckFormComponent, PostureChecksPageComponent, PostureChecksPageService, PreviewListComponent, ProfileComponent, ProgressMeterComponent, ProgressMeterStep, ProgressWizardComponent, ProgressWizardStep, ProjectableForm, ProtocolAddressPortInputComponent, QuickAddComponent, ResetEnrollmentService, SAVE_DENIED_BY_PERMISSION_TOOLTIP, SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE, SERVICE_EXTENSION_SERVICE, SERVICE_POLICY_EXTENSION_SERVICE, SETTINGS_SERVICE, SHAREDZ_EXTENSION, SelectorInputComponent, ServiceEdgeRouterPoliciesPageComponent, ServiceEdgeRouterPoliciesPageService, ServiceEdgeRouterPolicyFormComponent, ServiceEdgeRouterPolicyFormService, ServiceFormComponent, ServiceFormService, ServicePoliciesPageComponent, ServicePoliciesPageService, ServicePolicyFormComponent, ServicePolicyFormService, ServicesPageComponent, ServicesPageService, Session, SessionFormComponent, SessionRefreshService, SessionsPageComponent, SessionsPageService, SettingsComponent, SettingsService, SettingsServiceClass, SideModalComponent, SideNavbarComponent, SideNavigatorComponent, SimpleServiceComponent, StringInputComponent, TabNameService, TagSelectorComponent, TerminatorFormComponent, TerminatorFormService, TerminatorsPageComponent, TerminatorsPageService, TextListInputComponent, TransitRouterFormComponent, TransitRouterFormService, TransitRoutersPageComponent, TransitRoutersPageService, ValidationService, VerifyCertificateComponent, VisualizerServiceClass, ZAC_LOGIN_SERVICE, ZAC_VERSION, ZITI_DATA_SERVICE, ZITI_DOMAIN_CONTROLLER, ZITI_NAVIGATOR, ZITI_TAB_OVERRIDES, ZITI_URLS, ZacRoutingModule, ZitiControllerDataService, ZitiDataService, ZitiOidcService, decodeJwtPayload, jwtExpMs, jwtIatMs, pkceChallengeS256, playerFactory, randomUrlSafeString };
7925
+ export type { CanComponentDeactivate, ExtensionEvent, ExtensionEventType, ExtensionService, FilterObj, HAClusterStatus, HAController, OidcAuthContext, OidcLoginStep, OidcTokenSet, TabInterceptorService, ZitiDomainControllerService, ZitiSessionData };
7706
7926
  //# sourceMappingURL=index.d.ts.map