@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.
- package/esm2022/index.mjs +1 -3
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +3 -3
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +8 -18
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +5 -11
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +1 -3
- package/esm2022/lib/tab-core-utility/app/crud/tab-release.service.mjs +3 -3
- package/esm2022/lib/tab-core-utility/app/crud/tab-workflow.service.mjs +3 -22
- package/esm2022/lib/tab-core-utility/app/interfaces/notification.interface.mjs +3 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/release.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/service/notification/notification-inbox.service.mjs +57 -17
- package/esm2022/lib/tab-core-utility/core/service/notification/notification-websocket.service.mjs +18 -7
- package/index.d.ts +0 -2
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +2 -2
- package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +0 -2
- package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +0 -1
- package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +0 -1
- package/lib/tab-core-utility/app/crud/tab-workflow.service.d.ts +1 -16
- package/lib/tab-core-utility/app/interfaces/notification.interface.d.ts +17 -14
- package/lib/tab-core-utility/app/interfaces/release.interface.d.ts +49 -18
- package/lib/tab-core-utility/core/service/notification/notification-inbox.service.d.ts +11 -4
- package/lib/tab-core-utility/core/service/notification/notification-websocket.service.d.ts +1 -0
- package/package.json +1 -1
- package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +0 -67
- package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +0 -44
- package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +0 -35
- 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
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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 `
|
|
82
|
+
* Live-push payload — fields flat at top level (NOT inside `Data`).
|
|
81
83
|
*/
|
|
82
84
|
export interface NotificationPushPayload {
|
|
83
|
-
|
|
85
|
+
notificationId: string;
|
|
84
86
|
title: string;
|
|
85
87
|
body: string;
|
|
86
|
-
category: string;
|
|
88
|
+
category: string | null;
|
|
87
89
|
priority: NotificationPriority;
|
|
88
|
-
|
|
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
|
|
24
|
+
export interface FieldDiff {
|
|
18
25
|
id: string;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
referenceName: string;
|
|
27
|
+
oldValue?: any;
|
|
28
|
+
newValue?: any;
|
|
22
29
|
}
|
|
23
30
|
export interface QueryDiff {
|
|
24
31
|
id: string;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
32
|
-
|
|
48
|
+
referenceName: string;
|
|
49
|
+
properties?: {
|
|
50
|
+
oldValue: any;
|
|
51
|
+
newValue: any;
|
|
52
|
+
};
|
|
33
53
|
}
|
|
34
54
|
export interface CustomScriptDiff {
|
|
35
55
|
id: string;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
56
|
+
referenceName: string;
|
|
57
|
+
properties?: {
|
|
58
|
+
oldValue: any;
|
|
59
|
+
newValue: any;
|
|
60
|
+
};
|
|
39
61
|
}
|
|
40
62
|
export interface RecordDiff {
|
|
41
63
|
id: string;
|
|
42
|
-
|
|
64
|
+
referenceName?: string;
|
|
65
|
+
oldValue?: any;
|
|
66
|
+
newValue?: any;
|
|
43
67
|
}
|
|
44
68
|
export interface MetadataDiffResponse {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
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 `
|
|
72
|
+
* Parse an inbox notification's `Data` JSON into a UI-shaped object.
|
|
66
73
|
*
|
|
67
|
-
* Read state is surfaced via `
|
|
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
|
-
*
|
|
75
|
-
* `
|
|
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,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
|
-
}
|