@techextensor/tab-core-utility 2.2.194 → 2.2.196

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.
Files changed (87) hide show
  1. package/esm2022/index.mjs +6 -1
  2. package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +43 -25
  3. package/esm2022/lib/tab-core-utility/app/constants/common.mjs +14 -50
  4. package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +2 -2
  5. package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +41 -14
  6. package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +60 -84
  7. package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +84 -30
  8. package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +141 -12
  9. package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +137 -42
  10. package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +89 -38
  11. package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +156 -128
  12. package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
  13. package/esm2022/lib/tab-core-utility/app/helpers/auth-response.adapter.mjs +79 -0
  14. package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +33 -24
  15. package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +9 -11
  16. package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
  17. package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +7 -45
  18. package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +79 -76
  19. package/esm2022/lib/tab-core-utility/app/helpers/login-response.adapter.mjs +76 -0
  20. package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +42 -0
  21. package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +8 -4
  22. package/esm2022/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.mjs +5 -9
  23. package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +8 -33
  24. package/esm2022/lib/tab-core-utility/app/helpers/transition-response.adapter.mjs +83 -0
  25. package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +1 -1
  26. package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
  27. package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +42 -0
  28. package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +39 -1
  29. package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +36 -7
  30. package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +84 -47
  31. package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +24 -13
  32. package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +57 -23
  33. package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +21 -10
  34. package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +12 -6
  35. package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +11 -4
  36. package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +17 -16
  37. package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +1 -55
  38. package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +1 -164
  39. package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +36 -11
  40. package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +78 -1
  41. package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +90 -0
  42. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +268 -0
  43. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +207 -0
  44. package/index.d.ts +5 -0
  45. package/lib/tab-core-utility/app/constants/api-constants.d.ts +29 -21
  46. package/lib/tab-core-utility/app/constants/common.d.ts +9 -0
  47. package/lib/tab-core-utility/app/constants/storage-constants.d.ts +1 -1
  48. package/lib/tab-core-utility/app/crud/tab-blueprint.service.d.ts +14 -8
  49. package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +9 -7
  50. package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +20 -10
  51. package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +33 -6
  52. package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +50 -8
  53. package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +16 -21
  54. package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +34 -19
  55. package/lib/tab-core-utility/app/enums/query.enum.d.ts +3 -6
  56. package/lib/tab-core-utility/app/helpers/auth-response.adapter.d.ts +32 -0
  57. package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +6 -8
  58. package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +3 -0
  59. package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
  60. package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +7 -51
  61. package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +1 -0
  62. package/lib/tab-core-utility/app/helpers/login-response.adapter.d.ts +29 -0
  63. package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +22 -0
  64. package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +2 -1
  65. package/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.d.ts +1 -1
  66. package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +1 -0
  67. package/lib/tab-core-utility/app/helpers/transition-response.adapter.d.ts +30 -0
  68. package/lib/tab-core-utility/app/interfaces/auth.interface.d.ts +1 -1
  69. package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +61 -9
  70. package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +84 -0
  71. package/lib/tab-core-utility/app/models/api-query.class.d.ts +54 -9
  72. package/lib/tab-core-utility/app/models/app-field.model.d.ts +4 -2
  73. package/lib/tab-core-utility/app/models/app-object.model.d.ts +5 -3
  74. package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
  75. package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +7 -2
  76. package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
  77. package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
  78. package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
  79. package/lib/tab-core-utility/app/utils/json.util.d.ts +3 -2
  80. package/lib/tab-core-utility/app/utils/req-res.util.d.ts +1 -9
  81. package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +0 -61
  82. package/lib/tab-core-utility/auth/auth.service.d.ts +6 -0
  83. package/lib/tab-core-utility/core/http-client/api.service.d.ts +46 -0
  84. package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +40 -0
  85. package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +73 -0
  86. package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +122 -0
  87. package/package.json +3 -2
@@ -1,6 +1,5 @@
1
1
  import { HttpHeaders } from '@angular/common/http';
2
2
  import { AppObject } from '../models/app-object.class';
3
- import { AppFields } from '../models/data-source-queries.class';
4
3
  /**
5
4
  * Delete a key from the response object
6
5
  *
@@ -37,7 +36,7 @@ export declare function getHeaders(headers?: any): any;
37
36
  * @param appObject - The AppObject
38
37
  * @returns AppFields[] | null - The array of primary key fields or null
39
38
  */
40
- export declare function getPrimaryKeyFields(appObject: AppObject): AppFields[] | null;
39
+ export declare function getPrimaryKeyFields(appObject: AppObject): import("@techextensor/tab-core-utility").AppFields[] | null;
41
40
  /**
42
41
  * Get the edit record ID from the response object
43
42
  *
@@ -46,13 +45,6 @@ export declare function getPrimaryKeyFields(appObject: AppObject): AppFields[] |
46
45
  * @returns any - The edit record ID
47
46
  */
48
47
  export declare function getEditRecordId(response: any, fieldName: any): any;
49
- /**
50
- * Generate the fields schema based on the AppFields
51
- *
52
- * @param fields - The AppFields object
53
- * @returns any - The generated fields schema
54
- */
55
- export declare function generateFieldsSchema(url: any, fields: AppFields): {};
56
48
  /**
57
49
  * Get the HttpHeaders for form data requests
58
50
  *
@@ -1,36 +1,4 @@
1
1
  import { AppObject } from '../models/app-object.class';
2
- /** Get the DataSourceQuery ID from the selected AppObject's DataSourceQuery array
3
- * @param dsqList - The list of DataSourceQueries
4
- * @param table - The table name
5
- * @param like - The like string
6
- * @returns string - The ID of the DataSourceQuery
7
- */
8
- export declare function getDsqIdfromSelectedAppObjectDSQArray(dsqList: any, table: string, like: string): any;
9
- /** Get the AppObject based on the provided ID
10
- * @param id - The ID of the AppObject
11
- * @returns AppObject | null - The found AppObject or null
12
- */
13
- export declare function getAppObject(id: string): any;
14
- /**
15
- * Get the AppObject from the DataSourceQuery ID
16
- * @param dsqId - The DataSourceQuery ID
17
- * @returns AppObject | null - The found AppObject or null
18
- */
19
- export declare function getAppObjectFromDataSourceQueryID(dsqId: string): any;
20
- /**
21
- * Get the DataSourceQuery ID from the QueryName and table
22
- * @param table - The table name
23
- * @param dsq - The DataSourceQuery name
24
- * @returns any - The found DataSourceQuery
25
- */
26
- export declare function getDsqIDFromQueryName(table: string, dsq: string): any;
27
- /**
28
- * Get the Data from the DataSourceQuery ID
29
- *
30
- * @param dsqId - The DataSourceQuery ID
31
- * @returns any - The found Data
32
- */
33
- export declare function getDataFromDataSourceQueryID(dsqId: string): any;
34
2
  /**
35
3
  * Synchronize AppObject fields with the response
36
4
  *
@@ -39,32 +7,3 @@ export declare function getDataFromDataSourceQueryID(dsqId: string): any;
39
7
  * @returns any - The synchronized response object
40
8
  */
41
9
  export declare function syncAppObjectFields(response: any, appObject: AppObject): any;
42
- /**
43
- * Get the AppObject based on the SystemDBTableName
44
- *
45
- * @param tableName - The SystemDBTableName
46
- * @returns AppObject | null - The found AppObject or null
47
- */
48
- export declare function getAppObjectFromSystemDBTableName(tableName: string): any;
49
- /**
50
- * Get the fields based on the appobjectid
51
- *
52
- * @param appObjectId - The appobjectid
53
- * @returns AppObject | null - The found AppObject or null
54
- */
55
- export declare function getAppfieldsFromAppObjectId(appObjectId: string): any;
56
- export declare function getLookupAppfieldsFromAppObjectId(appObjectId: string): any;
57
- export declare function getViewAppObjectDetailsFromDSQID(dsqID: string): any;
58
- /**
59
- * Retrieves all appObjects and their DSQs in a single list
60
- * suitable for tree view representation.
61
- * @author : Parth B Thakkar
62
- * @Usage : HTTP Request
63
- * @returns Array<{ id: string; name: string; hasChildren: boolean; parentID: string | null }>
64
- */
65
- export declare function getAllAppObjectsForTreeViewJson(): {
66
- id: string;
67
- name: string;
68
- hasChildren: boolean;
69
- parentID: string | null;
70
- }[];
@@ -21,11 +21,17 @@ export declare class AuthService {
21
21
  registerTenant(credentials: RegisterTenant): Observable<CommonApiResponse>;
22
22
  /**
23
23
  * Register a new user
24
+ * Uses new identity service endpoint: POST auth/register
24
25
  * @param credentials - The new user's credentials
25
26
  * @param headers - The headers
26
27
  * @returns Observable<CommonApiResponse> - An observable of CommonApiResponse
27
28
  */
28
29
  register(credentials: NewUserRequest, headers?: any): Observable<CommonApiResponse>;
30
+ /**
31
+ * Transforms register request payload from PascalCase to camelCase for new identity service.
32
+ * { FirstName, LastName, Email, Password, ... } → { firstName, lastName, email, password, ... }
33
+ */
34
+ private transformRegisterRequest;
29
35
  /**
30
36
  * Reset Password
31
37
  * @param data - Data for resetting password
@@ -1,5 +1,6 @@
1
1
  import { HttpParams, HttpHeaders } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
+ import { APIServiceName, CommonApiResponse } from '../../app/interfaces/common.interface';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class ApiService {
5
6
  private readonly http;
@@ -81,6 +82,51 @@ export declare class ApiService {
81
82
  * @returns An Observable emitting the response data of type T.
82
83
  */
83
84
  deleteByUrl<T>(url: string, options?: any): Observable<any>;
85
+ /**
86
+ * Makes an HTTP GET request to a specific microservice
87
+ * @param serviceName - Name of the microservice (e.g., 'crudService', 'metadataService')
88
+ * @param endPointName - Endpoint path relative to the service
89
+ * @param params - Query parameters for the request
90
+ * @param reqHeader - Custom headers for the request
91
+ * @returns An Observable emitting the response data (auto-normalized to CommonApiResponse format)
92
+ */
93
+ getFromService(serviceName: APIServiceName, endPointName: string, params?: HttpParams, reqHeader?: HttpHeaders): Observable<CommonApiResponse>;
94
+ /**
95
+ * Makes an HTTP POST request to a specific microservice
96
+ * @param serviceName - Name of the microservice (e.g., 'crudService', 'formioService')
97
+ * @param endPointName - Endpoint path relative to the service
98
+ * @param data - Data to send with the request
99
+ * @param reqHeader - Custom headers for the request
100
+ * @returns An Observable emitting the response data (auto-normalized to CommonApiResponse format)
101
+ */
102
+ postToService<T, D>(serviceName: APIServiceName, endPointName: string, data?: D, reqHeader?: HttpHeaders): Observable<CommonApiResponse>;
103
+ /**
104
+ * Makes an HTTP PUT request to a specific microservice
105
+ * @param serviceName - Name of the microservice
106
+ * @param endPointName - Endpoint path relative to the service
107
+ * @param data - Data to send with the request
108
+ * @param reqHeader - Custom headers for the request
109
+ * @returns An Observable emitting the response data (auto-normalized to CommonApiResponse format)
110
+ */
111
+ putToService<T, D>(serviceName: APIServiceName, endPointName: string, data: D, reqHeader?: HttpHeaders): Observable<CommonApiResponse>;
112
+ /**
113
+ * Makes an HTTP DELETE request to a specific microservice
114
+ * @param serviceName - Name of the microservice
115
+ * @param endPointName - Endpoint path relative to the service
116
+ * @param data - Data to send with the request (optional, for DELETE with body)
117
+ * @param reqHeader - Custom headers for the request
118
+ * @returns An Observable emitting the response data (auto-normalized to CommonApiResponse format)
119
+ */
120
+ deleteFromService<D>(serviceName: APIServiceName, endPointName: string, data?: D, reqHeader?: HttpHeaders): Observable<CommonApiResponse>;
121
+ /**
122
+ * Makes an HTTP POST request to a specific microservice and returns a Blob response
123
+ * @param serviceName - Name of the microservice (e.g., 'reportService')
124
+ * @param endPointName - Endpoint path relative to the service
125
+ * @param data - Data to send with the request
126
+ * @param reqHeader - Custom headers for the request
127
+ * @returns An Observable emitting the response as a Blob
128
+ */
129
+ postBlobToService<D>(serviceName: APIServiceName, endPointName: string, data?: D, reqHeader?: HttpHeaders): Observable<Blob>;
84
130
  static ɵfac: i0.ɵɵFactoryDeclaration<ApiService, never>;
85
131
  static ɵprov: i0.ɵɵInjectableDeclaration<ApiService>;
86
132
  }
@@ -0,0 +1,40 @@
1
+ import { Observable } from 'rxjs';
2
+ import { CrudNotification, PendingOperation } from '../../../app/interfaces/signalr.interface';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Operation Tracker Service
6
+ * Tracks async operations by correlationId and matches them with SignalR notifications
7
+ * Used by TabFormioService for handling async processRequest operations
8
+ */
9
+ export declare class OperationTrackerService {
10
+ private pendingOperations;
11
+ private operationCompleted$;
12
+ /**
13
+ * Register an async operation for tracking
14
+ */
15
+ registerOperation(operation: PendingOperation): void;
16
+ /**
17
+ * Wait for operation to complete via SignalR notification
18
+ * Returns Observable that emits when notification with matching correlationId is received
19
+ */
20
+ waitForOperation(correlationId: string, timeoutMs?: number): Observable<CrudNotification>;
21
+ /**
22
+ * Handle incoming SignalR notification
23
+ * Called by SignalRService when notification is received
24
+ */
25
+ handleNotification(notification: CrudNotification): void;
26
+ /**
27
+ * Check if operation is pending
28
+ */
29
+ isPending(correlationId: string): boolean;
30
+ /**
31
+ * Get pending operations count (for debugging)
32
+ */
33
+ getPendingCount(): number;
34
+ /**
35
+ * Get all pending operations (for debugging)
36
+ */
37
+ getAllPending(): PendingOperation[];
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<OperationTrackerService, never>;
39
+ static ɵprov: i0.ɵɵInjectableDeclaration<OperationTrackerService>;
40
+ }
@@ -0,0 +1,73 @@
1
+ import { Subject } from 'rxjs';
2
+ import { ConnectionState, CrudNotification } from '../../../app/interfaces/signalr.interface';
3
+ import { SessionStorageService } from '../../../auth/session-storage.service';
4
+ import { LocalStorageService } from '../../../auth/local-storage.service';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * SignalR Infrastructure Service
8
+ * Handles low-level WebSocket connection, group management, and reconnection
9
+ * Internal use only - components should use SignalRService instead
10
+ */
11
+ export declare class SignalRInfrastructure {
12
+ private hubConnection;
13
+ readonly sessionStorageService: SessionStorageService;
14
+ readonly localStorageService: LocalStorageService;
15
+ readonly connectionState: import("@angular/core").WritableSignal<ConnectionState>;
16
+ readonly notifications$: Subject<CrudNotification>;
17
+ private activeGroups;
18
+ /**
19
+ * Helper method to get value from storage
20
+ * @param type The type of storage, 'Session' or 'Local'
21
+ * @param key The key to retrieve the value for
22
+ * @returns The value from storage, or null if not available
23
+ */
24
+ private getFromStorage;
25
+ get appId(): string | null;
26
+ get environmentId(): string | null;
27
+ get tenantId(): string | null;
28
+ get token(): string | null;
29
+ /**
30
+ * Connect to SignalR hub
31
+ */
32
+ connect(): Promise<void>;
33
+ /**
34
+ * Register SignalR event handlers for CRUD notifications
35
+ */
36
+ private registerEventHandlers;
37
+ /**
38
+ * Extract notification from SignalR callback args
39
+ * Handles both unwrapped (direct object) and wrapped ({ type, target, arguments }) formats
40
+ */
41
+ private extractNotification;
42
+ /**
43
+ * Register connection lifecycle handlers
44
+ */
45
+ private registerConnectionLifecycle;
46
+ /**
47
+ * Join SignalR group for an AppObject
48
+ */
49
+ joinGroup(appObjectId: string): Promise<void>;
50
+ /**
51
+ * Leave SignalR group
52
+ */
53
+ leaveGroup(appObjectId: string): Promise<void>;
54
+ /**
55
+ * Rejoin all active groups after reconnection
56
+ * This ensures components continue receiving notifications after network interruption
57
+ */
58
+ private rejoinGroups;
59
+ /**
60
+ * Check if connected
61
+ */
62
+ isConnected(): boolean;
63
+ /**
64
+ * Disconnect from SignalR hub (cleanup)
65
+ */
66
+ disconnect(): Promise<void>;
67
+ /**
68
+ * Get active groups (for debugging)
69
+ */
70
+ getActiveGroups(): string[];
71
+ static ɵfac: i0.ɵɵFactoryDeclaration<SignalRInfrastructure, never>;
72
+ static ɵprov: i0.ɵɵInjectableDeclaration<SignalRInfrastructure>;
73
+ }
@@ -0,0 +1,122 @@
1
+ import { Observable } from 'rxjs';
2
+ import { CrudNotification, NotificationCallback, PendingOperation } from '../../../app/interfaces/signalr.interface';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * SignalR Service
6
+ * Public API for:
7
+ * 1. Components to register for real-time CRUD notifications
8
+ * 2. Services (TabFormioService) to track async operations
9
+ *
10
+ * Usage in components:
11
+ * ```typescript
12
+ * ngOnInit() {
13
+ * this.signalRService.register(
14
+ * this.componentId,
15
+ * this.appObjectId,
16
+ * (notification) => this.handleNotification(notification)
17
+ * );
18
+ * }
19
+ *
20
+ * ngOnDestroy() {
21
+ * this.signalRService.unregister(this.componentId, this.appObjectId);
22
+ * }
23
+ * ```
24
+ *
25
+ * Usage in services (TabFormioService):
26
+ * ```typescript
27
+ * const correlationId = response.correlationId;
28
+ * this.signalRService.waitForOperation(correlationId).subscribe(notification => {
29
+ * // Handle completed operation
30
+ * });
31
+ * ```
32
+ */
33
+ export declare class SignalRService {
34
+ private infrastructure;
35
+ private operationTracker;
36
+ private componentRegistry;
37
+ /**
38
+ * Get connection state (for UI indicators)
39
+ */
40
+ readonly connectionState: import("@angular/core").WritableSignal<import("../../../app/interfaces/signalr.interface").ConnectionState>;
41
+ /**
42
+ * Check if currently connected
43
+ */
44
+ readonly isConnected: import("@angular/core").Signal<boolean>;
45
+ constructor();
46
+ /**
47
+ * Establish a connection to the SignalR hub
48
+ *
49
+ * This method is idempotent - if the connection is already established, it will not be re-established.
50
+ * Hub URL is read from Common.signalRHubUrl (set during app initialization via Common.init())
51
+ */
52
+ connect(): void;
53
+ /**
54
+ * Register component for real-time notifications
55
+ *
56
+ * @param componentId - Unique component identifier (generated by component)
57
+ * @param appObjectId - AppObject ID to subscribe to
58
+ * @param callback - Function to call when notification received
59
+ */
60
+ register(componentId: string, appObjectId: string, callback: NotificationCallback): void;
61
+ /**
62
+ * Unregister component (cleanup on component destroy)
63
+ *
64
+ * @param componentId - Component identifier to remove
65
+ * @param appObjectId - AppObject ID to unsubscribe from
66
+ */
67
+ unregister(componentId: string, appObjectId: string): void;
68
+ /**
69
+ * Wait for specific async operation to complete
70
+ * Used by TabFormioService for async processRequest operations
71
+ *
72
+ * @param correlationId - Correlation ID from backend response
73
+ * @param timeout - Optional timeout in milliseconds
74
+ * @returns Observable that emits when operation completes
75
+ */
76
+ waitForOperation(correlationId: string, timeout?: number): Observable<CrudNotification>;
77
+ /**
78
+ * Register async operation for tracking
79
+ * Optional - waitForOperation handles registration automatically
80
+ *
81
+ * @param operation - Pending operation details
82
+ */
83
+ registerOperation(operation: PendingOperation): void;
84
+ /**
85
+ * Check if operation is pending
86
+ */
87
+ isOperationPending(correlationId: string): boolean;
88
+ /**
89
+ * Notify all registered components for an AppObject
90
+ * Called when notification received from SignalR hub
91
+ */
92
+ private notifyComponents;
93
+ /**
94
+ * Get active AppObject groups (for debugging)
95
+ */
96
+ getActiveGroups(): string[];
97
+ /**
98
+ * Get component count for an AppObject (for debugging)
99
+ */
100
+ getComponentCount(appObjectId: string): number;
101
+ /**
102
+ * Get total registered components across all AppObjects (for debugging)
103
+ */
104
+ getTotalComponentCount(): number;
105
+ /**
106
+ * Get registry state (for debugging)
107
+ */
108
+ getRegistryState(): {
109
+ appObjectId: string;
110
+ componentCount: number;
111
+ }[];
112
+ /**
113
+ * Get pending operations count (for debugging)
114
+ */
115
+ getPendingOperationsCount(): number;
116
+ /**
117
+ * Get all pending operations (for debugging)
118
+ */
119
+ getPendingOperations(): PendingOperation[];
120
+ static ɵfac: i0.ɵɵFactoryDeclaration<SignalRService, never>;
121
+ static ɵprov: i0.ɵɵInjectableDeclaration<SignalRService>;
122
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techextensor/tab-core-utility",
3
- "version": "2.2.194",
3
+ "version": "2.2.196",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.15",
6
6
  "@angular/core": "^19.2.15",
@@ -11,7 +11,8 @@
11
11
  "idb": "^8.0.2",
12
12
  "liquidjs": "^10.20.3",
13
13
  "cypress": "^13.17.0",
14
- "crypto-js": "^4.2.0"
14
+ "crypto-js": "^4.2.0",
15
+ "@microsoft/signalr": "^10.0.0"
15
16
  },
16
17
  "dependencies": {
17
18
  "tslib": "^2.8.1"