@techextensor/tab-core-utility 2.2.200 → 2.2.202

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 (26) hide show
  1. package/esm2022/index.mjs +1 -3
  2. package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +3 -3
  3. package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +8 -18
  4. package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +5 -11
  5. package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +1 -3
  6. package/esm2022/lib/tab-core-utility/app/crud/tab-release.service.mjs +3 -3
  7. package/esm2022/lib/tab-core-utility/app/crud/tab-workflow.service.mjs +3 -22
  8. package/esm2022/lib/tab-core-utility/app/interfaces/notification.interface.mjs +3 -1
  9. package/esm2022/lib/tab-core-utility/app/interfaces/release.interface.mjs +1 -1
  10. package/esm2022/lib/tab-core-utility/core/service/notification/notification-inbox.service.mjs +57 -17
  11. package/esm2022/lib/tab-core-utility/core/service/notification/notification-websocket.service.mjs +18 -7
  12. package/index.d.ts +0 -2
  13. package/lib/tab-core-utility/app/constants/api-constants.d.ts +2 -2
  14. package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +0 -2
  15. package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +0 -1
  16. package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +0 -1
  17. package/lib/tab-core-utility/app/crud/tab-workflow.service.d.ts +1 -16
  18. package/lib/tab-core-utility/app/interfaces/notification.interface.d.ts +17 -14
  19. package/lib/tab-core-utility/app/interfaces/release.interface.d.ts +49 -18
  20. package/lib/tab-core-utility/core/service/notification/notification-inbox.service.d.ts +11 -4
  21. package/lib/tab-core-utility/core/service/notification/notification-websocket.service.d.ts +1 -0
  22. package/package.json +1 -1
  23. package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +0 -67
  24. package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +0 -44
  25. package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +0 -35
  26. package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +0 -34
@@ -4,7 +4,6 @@ import { CommonApiResponse, HttpExecuteRequestPayload, ImportDataPayload, RcordH
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class TabGetService {
6
6
  private readonly apiService;
7
- private readonly dsqHelper;
8
7
  private readonly metadataHelper;
9
8
  /**
10
9
  * Execute RAW DSQ with Name
@@ -2,22 +2,7 @@ import { executeTABWorkflowPayload } from "../interfaces/common.interface";
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TabWorkflowService {
4
4
  private readonly apiService;
5
- private readonly api_url;
6
- private readonly workflow_url;
7
- /**
8
- * Executes a TAB workflow.
9
- * @param endPoint The endpoint for the workflow.
10
- * @param data The data to send with the request.
11
- * @returns An observable of the workflow execution result.
12
- */
13
- executeTABWorkflow(payload: executeTABWorkflowPayload, headers?: any): import("rxjs").Observable<any>;
14
- /**
15
- * Executes an ELSA workflow.
16
- * @param endPoint The endpoint for the workflow.
17
- * @param data The data to send with the request.
18
- * @returns An observable of the workflow execution result.
19
- */
20
- executeELSAWorkflow(endPoint: string, data: string): import("rxjs").Observable<any>;
5
+ executeTABWorkflow(payload: executeTABWorkflowPayload, headers?: any): import("rxjs").Observable<import("../interfaces/common.interface").CommonApiResponse>;
21
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TabWorkflowService, never>;
22
7
  static ɵprov: i0.ɵɵInjectableDeclaration<TabWorkflowService>;
23
8
  }
@@ -60,32 +60,35 @@ export declare const NOTIFICATION_WS_CONFIG: {
60
60
  readonly DEFAULT_PAGE_SIZE: 20;
61
61
  readonly RECONNECT_DELAYS_MS: readonly [2000, 5000, 10000];
62
62
  readonly RECONNECT_MAX_DELAY_MS: 10000;
63
+ readonly LOAD_TIMEOUT_MS: 10000;
64
+ readonly CONNECT_TIMEOUT_MS: 1500;
63
65
  };
64
66
  /**
65
67
  * One item in `get_notifications_response.notifications[]` per BE doc.
66
68
  */
67
69
  export interface NotificationItem {
68
- id: string;
69
- status: NotificationStatus;
70
- data: string;
71
- priority: NotificationPriority;
72
- workspaceKey: string;
73
- provider: string;
74
- createdAt: string;
75
- updatedAt: string;
76
- expiresAt: string | null;
77
- errorMessage: string | null;
70
+ Id: string;
71
+ Status: NotificationStatus;
72
+ Data: string;
73
+ Priority: NotificationPriority;
74
+ WorkspaceKey: string;
75
+ Provider: string;
76
+ CreatedAt: string;
77
+ UpdatedAt: string;
78
+ ExpiresAt: string | null;
79
+ ErrorMessage: string | null;
78
80
  }
79
81
  /**
80
- * Live-push payload — fields flat at top level (NOT inside `data`).
82
+ * Live-push payload — fields flat at top level (NOT inside `Data`).
81
83
  */
82
84
  export interface NotificationPushPayload {
83
- id: string;
85
+ notificationId: string;
84
86
  title: string;
85
87
  body: string;
86
- category: string;
88
+ category: string | null;
87
89
  priority: NotificationPriority;
88
- workspaceKey: string;
90
+ userId: string;
91
+ actions: NotificationAction[] | null;
89
92
  createdAt: string;
90
93
  }
91
94
  /**
@@ -9,46 +9,77 @@ export declare const ChangeType: {
9
9
  readonly Deleted: "Deleted";
10
10
  };
11
11
  export type ChangeTypeValue = typeof ChangeType[keyof typeof ChangeType];
12
+ export interface EnvironmentSnapshot {
13
+ id: string;
14
+ name: string;
15
+ sequence: number;
16
+ releaseVersion: string | null;
17
+ connectionId?: string;
18
+ }
12
19
  export interface DiffSection<T> {
13
20
  added: T[];
14
21
  updated: T[];
15
22
  deleted: T[];
16
23
  }
17
- export interface AppObjectDiff {
24
+ export interface FieldDiff {
18
25
  id: string;
19
- name: string;
20
- displayName?: string;
21
- [key: string]: any;
26
+ referenceName: string;
27
+ oldValue?: any;
28
+ newValue?: any;
22
29
  }
23
30
  export interface QueryDiff {
24
31
  id: string;
25
- queryName: string;
26
- appObject?: string;
27
- [key: string]: any;
32
+ referenceName: string;
33
+ oldValue?: any;
34
+ newValue?: any;
35
+ }
36
+ export interface AppObjectDiff {
37
+ id: string;
38
+ referenceName: string;
39
+ properties?: {
40
+ oldValue: any;
41
+ newValue: any;
42
+ };
43
+ fields?: DiffSection<FieldDiff> | null;
44
+ queries?: DiffSection<QueryDiff> | null;
28
45
  }
29
46
  export interface ScreenDiff {
30
47
  id: string;
31
- screenName: string;
32
- [key: string]: any;
48
+ referenceName: string;
49
+ properties?: {
50
+ oldValue: any;
51
+ newValue: any;
52
+ };
33
53
  }
34
54
  export interface CustomScriptDiff {
35
55
  id: string;
36
- name?: string;
37
- type?: string;
38
- [key: string]: any;
56
+ referenceName: string;
57
+ properties?: {
58
+ oldValue: any;
59
+ newValue: any;
60
+ };
39
61
  }
40
62
  export interface RecordDiff {
41
63
  id: string;
42
- [key: string]: any;
64
+ referenceName?: string;
65
+ oldValue?: any;
66
+ newValue?: any;
43
67
  }
44
68
  export interface MetadataDiffResponse {
45
- appObjects: DiffSection<AppObjectDiff>;
46
- queries: DiffSection<QueryDiff>;
47
- screens: DiffSection<ScreenDiff>;
48
- customScripts: DiffSection<CustomScriptDiff>;
69
+ sourceEnvironment: EnvironmentSnapshot;
70
+ targetEnvironment: EnvironmentSnapshot;
71
+ metadataDiff: {
72
+ appObjects: DiffSection<AppObjectDiff>;
73
+ screens: DiffSection<ScreenDiff>;
74
+ customScripts: DiffSection<CustomScriptDiff>;
75
+ };
49
76
  }
50
77
  export interface DataDiffResponse {
51
- tables: Record<string, DiffSection<RecordDiff>>;
78
+ sourceEnvironment: EnvironmentSnapshot;
79
+ targetEnvironment: EnvironmentSnapshot;
80
+ dataDiff: {
81
+ tables: Record<string, DiffSection<RecordDiff>>;
82
+ };
52
83
  }
53
84
  export interface ApplyReleaseRequest {
54
85
  releaseId: string;
@@ -26,6 +26,7 @@ export declare class NotificationInboxService {
26
26
  private readonly clearEvent$;
27
27
  private readonly loading$;
28
28
  private readonly totalPages$;
29
+ private loadMoreTimer;
29
30
  constructor();
30
31
  /**
31
32
  * Connect to the notification WebSocket. Awaitable, idempotent.
@@ -44,6 +45,12 @@ export declare class NotificationInboxService {
44
45
  disconnect(): Promise<void>;
45
46
  /**
46
47
  * Fetch a page of notifications. Server replies via GET_NOTIFICATIONS_RESPONSE.
48
+ *
49
+ * Skips entirely when the socket isn't connected — otherwise we'd set
50
+ * `loading$` true, send into a no-op, and the UI would spin forever.
51
+ *
52
+ * Adds a safety timeout so the spinner clears even if the BE accepts the
53
+ * connection but never replies (broken hub, dropped frame, etc.).
47
54
  */
48
55
  loadMore(pageNumber: number, pageSize?: number): void;
49
56
  /**
@@ -62,17 +69,17 @@ export declare class NotificationInboxService {
62
69
  getTotalPages(): Observable<number>;
63
70
  private handleMessage;
64
71
  /**
65
- * Parse an inbox notification's `data` JSON into a UI-shaped object.
72
+ * Parse an inbox notification's `Data` JSON into a UI-shaped object.
66
73
  *
67
- * Read state is surfaced via `status === 'Read'` (confirmed by BE).
74
+ * Read state is surfaced via `Status === 'Read'` (confirmed by BE).
68
75
  * Inbox response only contains `Delivered` (unread) + `Read` items;
69
76
  * `Pending` / `Done` / `Failed` are filtered out server-side.
70
77
  */
71
78
  private parseInboxNotification;
72
79
  /**
73
80
  * Wrap a server-pushed live notification into the same UI shape as inbox items.
74
- * The push event has fields flat at the top level (NOT inside `data`) synthesize
75
- * `parsedPayload` from those fields so the component sees a uniform shape.
81
+ * Push fields are camelCase (anonymous object) with `notificationId` as the id field.
82
+ * `actions` arrive already parsed not a JSON string like inbox `Data`.
76
83
  */
77
84
  private transformPushNotification;
78
85
  static ɵfac: i0.ɵɵFactoryDeclaration<NotificationInboxService, never>;
@@ -33,6 +33,7 @@ export declare class NotificationWebSocketService {
33
33
  * Any stale (non-OPEN) socket is torn down before rebuild.
34
34
  */
35
35
  connect(params: NotificationWebSocketConnectParams): Promise<void>;
36
+ private raceWithTimeout;
36
37
  private doConnect;
37
38
  /**
38
39
  * Send a message over the socket. Silently no-ops if not connected.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techextensor/tab-core-utility",
3
- "version": "2.2.200",
3
+ "version": "2.2.202",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.15",
6
6
  "@angular/core": "^19.2.15",
@@ -1,67 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Injectable, inject } from '@angular/core';
3
- import { ApiService } from '../../../core/http-client/api.service';
4
- import { QueryType } from '../../enums/query.enum';
5
- import { API } from '../../constants/api-constants';
6
- import { getHeaders } from '../../utils/req-res.util';
7
- import { MetadataHelper } from './meta-data.helpers';
8
- import { AccessPermission } from '../../enums/permission.enum';
9
- import * as i0 from "@angular/core";
10
- export class DSQHelper {
11
- constructor() {
12
- this.apiService = inject(ApiService);
13
- this.metadataHelper = inject(MetadataHelper);
14
- }
15
- /**
16
- * Executes a query based on the query type
17
- * NOTE: INSERT, UPDATE, and DELETE now use new /records/* endpoints
18
- * This helper now only handles legacy endpoints: BulkInsert and Select
19
- * @param data The data to be executed
20
- * @param queryType The type of query to be executed
21
- * @returns The result of the query execution
22
- */
23
- executeQuery(data, queryType, headers) {
24
- switch (queryType) {
25
- case QueryType.BulkInsert:
26
- return this.execution(data, API.bulkInsert, headers);
27
- case QueryType.Select:
28
- return this.execution(data, API.select, headers);
29
- default:
30
- return null;
31
- }
32
- }
33
- /**
34
- * Executes an HTTP POST request with the provided data and URL
35
- * @param data The data to be sent in the POST request
36
- * @param endPointName The URL to send the POST request to
37
- * @returns The result of the POST request if headers are available, otherwise null
38
- */
39
- execution(data, endPointName, headers) {
40
- const header = getHeaders(headers);
41
- return this.apiService.post(endPointName, data, header);
42
- }
43
- /**
44
- * Checks if the user has access to the specified object based on roles and access type
45
- * @param dsqId The DataSourceQuery ID to check access for
46
- * @param accessType The type of access to check (e.g., read, write)
47
- * @param roles The roles of the user with IDs
48
- * @returns True if the user has access, false otherwise
49
- */
50
- doesHaveObjectAccess(dsqId, accessType, roles) {
51
- const dsq = this.metadataHelper.getDataSourceQueryByIdOrName(dsqId);
52
- const appObject = dsq?.parentAppObject;
53
- if (appObject) {
54
- const accessList = appObject.AccessList?.filter((access) => roles.some((role) => access.RoleID.toLowerCase() === role.ID.toLowerCase() &&
55
- access.IsEnabled)) || [];
56
- return accessList.some((access) => access[accessType] === AccessPermission.All);
57
- }
58
- return false;
59
- }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: DSQHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
61
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: DSQHelper, providedIn: 'root' }); }
62
- }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: DSQHelper, decorators: [{
64
- type: Injectable,
65
- args: [{ providedIn: 'root' }]
66
- }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHNxLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vZHNxLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sNkJBQTZCLENBQUM7O0FBRzNFLE1BQU0sT0FBTyxTQUFTO0lBRHRCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0ErRDFEO0lBN0RDOzs7Ozs7O09BT0c7SUFDSCxZQUFZLENBQUMsSUFBUyxFQUFFLFNBQW9CLEVBQUUsT0FBYTtRQUN6RCxRQUFRLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLEtBQUssU0FBUyxDQUFDLFVBQVU7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2RCxLQUFLLFNBQVMsQ0FBQyxNQUFNO2dCQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkQ7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFNBQVMsQ0FBQyxJQUFTLEVBQUUsWUFBb0IsRUFBRSxPQUFhO1FBQzlELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUNsQixLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsS0FBdUI7UUFFdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRSxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUUsZUFBZSxDQUFDO1FBRXZDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxNQUFNLFVBQVUsR0FBVSxTQUFTLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQ3JFLEtBQUssQ0FBQyxJQUFJLENBQ1IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JELE1BQU0sQ0FBQyxTQUFTLENBQ25CLENBQ0YsSUFBSSxFQUFFLENBQUM7WUFFUixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQ3BCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssZ0JBQWdCLENBQUMsR0FBRyxDQUN4RCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0FoRVUsU0FBUzttSEFBVCxTQUFTLGNBREksTUFBTTs7NEZBQ25CLFNBQVM7a0JBRHJCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUXVlcnlUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvcXVlcnkuZW51bSc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzJztcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gJy4uLy4uL3V0aWxzL3JlcS1yZXMudXRpbCc7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSAnLi9tZXRhLWRhdGEuaGVscGVycyc7XHJcbmltcG9ydCB7IEFjY2Vzc1Blcm1pc3Npb24sIEFjY2Vzc1R5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9wZXJtaXNzaW9uLmVudW0nO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIERTUUhlbHBlciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIHF1ZXJ5IGJhc2VkIG9uIHRoZSBxdWVyeSB0eXBlXHJcbiAgICogTk9URTogSU5TRVJULCBVUERBVEUsIGFuZCBERUxFVEUgbm93IHVzZSBuZXcgL3JlY29yZHMvKiBlbmRwb2ludHNcclxuICAgKiBUaGlzIGhlbHBlciBub3cgb25seSBoYW5kbGVzIGxlZ2FjeSBlbmRwb2ludHM6IEJ1bGtJbnNlcnQgYW5kIFNlbGVjdFxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIGJlIGV4ZWN1dGVkXHJcbiAgICogQHBhcmFtIHF1ZXJ5VHlwZSBUaGUgdHlwZSBvZiBxdWVyeSB0byBiZSBleGVjdXRlZFxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIHF1ZXJ5IGV4ZWN1dGlvblxyXG4gICAqL1xyXG4gIGV4ZWN1dGVRdWVyeShkYXRhOiBhbnksIHF1ZXJ5VHlwZTogUXVlcnlUeXBlLCBoZWFkZXJzPzogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHF1ZXJ5VHlwZSkge1xyXG4gICAgICBjYXNlIFF1ZXJ5VHlwZS5CdWxrSW5zZXJ0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGlvbihkYXRhLCBBUEkuYnVsa0luc2VydCwgaGVhZGVycyk7XHJcbiAgICAgIGNhc2UgUXVlcnlUeXBlLlNlbGVjdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRpb24oZGF0YSwgQVBJLnNlbGVjdCwgaGVhZGVycyk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhbiBIVFRQIFBPU1QgcmVxdWVzdCB3aXRoIHRoZSBwcm92aWRlZCBkYXRhIGFuZCBVUkxcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBiZSBzZW50IGluIHRoZSBQT1NUIHJlcXVlc3RcclxuICAgKiBAcGFyYW0gZW5kUG9pbnROYW1lIFRoZSBVUkwgdG8gc2VuZCB0aGUgUE9TVCByZXF1ZXN0IHRvXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgUE9TVCByZXF1ZXN0IGlmIGhlYWRlcnMgYXJlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIG51bGxcclxuICAgKi9cclxuICBwcml2YXRlIGV4ZWN1dGlvbihkYXRhOiBhbnksIGVuZFBvaW50TmFtZTogc3RyaW5nLCBoZWFkZXJzPzogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGVuZFBvaW50TmFtZSwgZGF0YSwgaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiB0aGUgdXNlciBoYXMgYWNjZXNzIHRvIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGJhc2VkIG9uIHJvbGVzIGFuZCBhY2Nlc3MgdHlwZVxyXG4gICAqIEBwYXJhbSBkc3FJZCBUaGUgRGF0YVNvdXJjZVF1ZXJ5IElEIHRvIGNoZWNrIGFjY2VzcyBmb3JcclxuICAgKiBAcGFyYW0gYWNjZXNzVHlwZSBUaGUgdHlwZSBvZiBhY2Nlc3MgdG8gY2hlY2sgKGUuZy4sIHJlYWQsIHdyaXRlKVxyXG4gICAqIEBwYXJhbSByb2xlcyBUaGUgcm9sZXMgb2YgdGhlIHVzZXIgd2l0aCBJRHNcclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB1c2VyIGhhcyBhY2Nlc3MsIGZhbHNlIG90aGVyd2lzZVxyXG4gICAqL1xyXG4gIGRvZXNIYXZlT2JqZWN0QWNjZXNzKFxyXG4gICAgZHNxSWQ6IHN0cmluZyxcclxuICAgIGFjY2Vzc1R5cGU6IEFjY2Vzc1R5cGUsXHJcbiAgICByb2xlczogW3sgSUQ6IHN0cmluZyB9XVxyXG4gICkge1xyXG4gICAgY29uc3QgZHNxID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXREYXRhU291cmNlUXVlcnlCeUlkT3JOYW1lKGRzcUlkKTtcclxuICAgIGNvbnN0IGFwcE9iamVjdCA9IGRzcT8ucGFyZW50QXBwT2JqZWN0O1xyXG5cclxuICAgIGlmIChhcHBPYmplY3QpIHtcclxuICAgICAgY29uc3QgYWNjZXNzTGlzdDogYW55W10gPSBhcHBPYmplY3QuQWNjZXNzTGlzdD8uZmlsdGVyKChhY2Nlc3M6IGFueSkgPT5cclxuICAgICAgICByb2xlcy5zb21lKFxyXG4gICAgICAgICAgKHJvbGUpID0+XHJcbiAgICAgICAgICAgIGFjY2Vzcy5Sb2xlSUQudG9Mb3dlckNhc2UoKSA9PT0gcm9sZS5JRC50b0xvd2VyQ2FzZSgpICYmXHJcbiAgICAgICAgICAgIGFjY2Vzcy5Jc0VuYWJsZWRcclxuICAgICAgICApXHJcbiAgICAgICkgfHwgW107XHJcblxyXG4gICAgICByZXR1cm4gYWNjZXNzTGlzdC5zb21lKFxyXG4gICAgICAgIChhY2Nlc3MpID0+IGFjY2Vzc1thY2Nlc3NUeXBlXSA9PT0gQWNjZXNzUGVybWlzc2lvbi5BbGxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,44 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Injectable } from '@angular/core';
3
- import { QueryType } from '../../enums/query.enum';
4
- import * as i0 from "@angular/core";
5
- export class RequestResponseHelper {
6
- /**
7
- * Generates the payload for inserting data into a table in bulk
8
- * @param table The table name to insert data into
9
- * @param whereClause The filter criteria for the insert operation
10
- * @param value The value sets to be inserted
11
- * @param fields Optional list of fields to include in the insert operation
12
- * @returns The payload for the bulk insert operation
13
- */
14
- bulkInsertPayload(table, whereClause, value, fields) {
15
- return {
16
- QueryObjectID: table,
17
- QueryType: QueryType.BulkInsert,
18
- Joins: [],
19
- WhereClause: whereClause,
20
- Values: value,
21
- Fields: fields,
22
- };
23
- }
24
- /**
25
- * Generates the payload for deleting data from a table
26
- * NEW: Returns new format for /records/delete endpoint
27
- * @param tableName The table name (entityName) to delete data from
28
- * @param whereClause The filter criteria for the delete operation (NEW format with lowercase)
29
- * @returns The payload for the delete operation in NEW format
30
- */
31
- deletePayload(tableName, whereClause) {
32
- return {
33
- entityName: tableName,
34
- whereClause: whereClause,
35
- };
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: RequestResponseHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: RequestResponseHelper, providedIn: 'root' }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: RequestResponseHelper, decorators: [{
41
- type: Injectable,
42
- args: [{ providedIn: 'root' }]
43
- }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLXJlcy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRW5ELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQixDQUNmLEtBQWEsRUFDYixXQUE4QixFQUM5QixLQUFxQyxFQUNyQyxNQUFpQjtRQUVqQixPQUFPO1lBQ0wsYUFBYSxFQUFFLEtBQUs7WUFDcEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxVQUFVO1lBQy9CLEtBQUssRUFBRSxFQUFFO1lBQ1QsV0FBVyxFQUFFLFdBQVc7WUFDeEIsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUFDLFNBQWlCLEVBQUUsV0FBOEI7UUFDN0QsT0FBTztZQUNMLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFdBQVcsRUFBRSxXQUFXO1NBQ3pCLENBQUM7SUFDSixDQUFDOytHQXJDVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQURSLE1BQU07OzRGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBUElCdWxrSW5zZXJ0RmllbGRzVmFsdWVTZXRzLCBBUElGaWx0ZXJDcml0ZXJpYSB9IGZyb20gJy4uLy4uL21vZGVscy9hcGktcXVlcnkuY2xhc3MnO1xyXG5pbXBvcnQgeyBRdWVyeVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9xdWVyeS5lbnVtJztcclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFJlcXVlc3RSZXNwb25zZUhlbHBlciB7XHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBwYXlsb2FkIGZvciBpbnNlcnRpbmcgZGF0YSBpbnRvIGEgdGFibGUgaW4gYnVsa1xyXG4gICAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgbmFtZSB0byBpbnNlcnQgZGF0YSBpbnRvXHJcbiAgICogQHBhcmFtIHdoZXJlQ2xhdXNlIFRoZSBmaWx0ZXIgY3JpdGVyaWEgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBzZXRzIHRvIGJlIGluc2VydGVkXHJcbiAgICogQHBhcmFtIGZpZWxkcyBPcHRpb25hbCBsaXN0IG9mIGZpZWxkcyB0byBpbmNsdWRlIGluIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIHBheWxvYWQgZm9yIHRoZSBidWxrIGluc2VydCBvcGVyYXRpb25cclxuICAgKi9cclxuICBidWxrSW5zZXJ0UGF5bG9hZChcclxuICAgIHRhYmxlOiBzdHJpbmcsXHJcbiAgICB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEsXHJcbiAgICB2YWx1ZTogQVBJQnVsa0luc2VydEZpZWxkc1ZhbHVlU2V0c1tdLFxyXG4gICAgZmllbGRzPzogc3RyaW5nW11cclxuICApIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIFF1ZXJ5T2JqZWN0SUQ6IHRhYmxlLFxyXG4gICAgICBRdWVyeVR5cGU6IFF1ZXJ5VHlwZS5CdWxrSW5zZXJ0LFxyXG4gICAgICBKb2luczogW10sXHJcbiAgICAgIFdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZSxcclxuICAgICAgVmFsdWVzOiB2YWx1ZSxcclxuICAgICAgRmllbGRzOiBmaWVsZHMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBwYXlsb2FkIGZvciBkZWxldGluZyBkYXRhIGZyb20gYSB0YWJsZVxyXG4gICAqIE5FVzogUmV0dXJucyBuZXcgZm9ybWF0IGZvciAvcmVjb3Jkcy9kZWxldGUgZW5kcG9pbnRcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIChlbnRpdHlOYW1lKSB0byBkZWxldGUgZGF0YSBmcm9tXHJcbiAgICogQHBhcmFtIHdoZXJlQ2xhdXNlIFRoZSBmaWx0ZXIgY3JpdGVyaWEgZm9yIHRoZSBkZWxldGUgb3BlcmF0aW9uIChORVcgZm9ybWF0IHdpdGggbG93ZXJjYXNlKVxyXG4gICAqIEByZXR1cm5zIFRoZSBwYXlsb2FkIGZvciB0aGUgZGVsZXRlIG9wZXJhdGlvbiBpbiBORVcgZm9ybWF0XHJcbiAgICovXHJcbiAgZGVsZXRlUGF5bG9hZCh0YWJsZU5hbWU6IHN0cmluZywgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBlbnRpdHlOYW1lOiB0YWJsZU5hbWUsXHJcbiAgICAgIHdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,35 +0,0 @@
1
- import { QueryType } from '../../enums/query.enum';
2
- import { AccessType } from '../../enums/permission.enum';
3
- import * as i0 from "@angular/core";
4
- export declare class DSQHelper {
5
- private readonly apiService;
6
- private readonly metadataHelper;
7
- /**
8
- * Executes a query based on the query type
9
- * NOTE: INSERT, UPDATE, and DELETE now use new /records/* endpoints
10
- * This helper now only handles legacy endpoints: BulkInsert and Select
11
- * @param data The data to be executed
12
- * @param queryType The type of query to be executed
13
- * @returns The result of the query execution
14
- */
15
- executeQuery(data: any, queryType: QueryType, headers?: any): import("rxjs").Observable<any> | null;
16
- /**
17
- * Executes an HTTP POST request with the provided data and URL
18
- * @param data The data to be sent in the POST request
19
- * @param endPointName The URL to send the POST request to
20
- * @returns The result of the POST request if headers are available, otherwise null
21
- */
22
- private execution;
23
- /**
24
- * Checks if the user has access to the specified object based on roles and access type
25
- * @param dsqId The DataSourceQuery ID to check access for
26
- * @param accessType The type of access to check (e.g., read, write)
27
- * @param roles The roles of the user with IDs
28
- * @returns True if the user has access, false otherwise
29
- */
30
- doesHaveObjectAccess(dsqId: string, accessType: AccessType, roles: [{
31
- ID: string;
32
- }]): boolean;
33
- static ɵfac: i0.ɵɵFactoryDeclaration<DSQHelper, never>;
34
- static ɵprov: i0.ɵɵInjectableDeclaration<DSQHelper>;
35
- }
@@ -1,34 +0,0 @@
1
- import { APIBulkInsertFieldsValueSets, APIFilterCriteria } from '../../models/api-query.class';
2
- import { QueryType } from '../../enums/query.enum';
3
- import * as i0 from "@angular/core";
4
- export declare class RequestResponseHelper {
5
- /**
6
- * Generates the payload for inserting data into a table in bulk
7
- * @param table The table name to insert data into
8
- * @param whereClause The filter criteria for the insert operation
9
- * @param value The value sets to be inserted
10
- * @param fields Optional list of fields to include in the insert operation
11
- * @returns The payload for the bulk insert operation
12
- */
13
- bulkInsertPayload(table: string, whereClause: APIFilterCriteria, value: APIBulkInsertFieldsValueSets[], fields?: string[]): {
14
- QueryObjectID: string;
15
- QueryType: QueryType;
16
- Joins: never[];
17
- WhereClause: APIFilterCriteria;
18
- Values: APIBulkInsertFieldsValueSets[];
19
- Fields: string[] | undefined;
20
- };
21
- /**
22
- * Generates the payload for deleting data from a table
23
- * NEW: Returns new format for /records/delete endpoint
24
- * @param tableName The table name (entityName) to delete data from
25
- * @param whereClause The filter criteria for the delete operation (NEW format with lowercase)
26
- * @returns The payload for the delete operation in NEW format
27
- */
28
- deletePayload(tableName: string, whereClause: APIFilterCriteria): {
29
- entityName: string;
30
- whereClause: APIFilterCriteria;
31
- };
32
- static ɵfac: i0.ɵɵFactoryDeclaration<RequestResponseHelper, never>;
33
- static ɵprov: i0.ɵɵInjectableDeclaration<RequestResponseHelper>;
34
- }