@halix/action-sdk 1.0.23 → 1.0.25
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/lib/cjs/content.js +12 -70
- package/lib/cjs/data-crud.js +49 -117
- package/lib/cjs/index.js +8 -1
- package/lib/cjs/lists.js +37 -176
- package/lib/cjs/messaging.js +13 -59
- package/lib/cjs/preferences.js +75 -0
- package/lib/cjs/sdk-general.js +6 -18
- package/lib/cjs/types/content.d.ts +12 -70
- package/lib/cjs/types/content.d.ts.map +1 -1
- package/lib/cjs/types/data-crud.d.ts +24 -117
- package/lib/cjs/types/data-crud.d.ts.map +1 -1
- package/lib/cjs/types/filter-expressions.d.ts +35 -107
- package/lib/cjs/types/filter-expressions.d.ts.map +1 -1
- package/lib/cjs/types/index.d.ts +1 -0
- package/lib/cjs/types/index.d.ts.map +1 -1
- package/lib/cjs/types/lists.d.ts +22 -177
- package/lib/cjs/types/lists.d.ts.map +1 -1
- package/lib/cjs/types/messaging.d.ts +8 -59
- package/lib/cjs/types/messaging.d.ts.map +1 -1
- package/lib/cjs/types/preferences.d.ts +17 -0
- package/lib/cjs/types/preferences.d.ts.map +1 -0
- package/lib/cjs/types/sdk-general.d.ts +23 -78
- package/lib/cjs/types/sdk-general.d.ts.map +1 -1
- package/lib/cjs/types/utilities.d.ts +9 -29
- package/lib/cjs/types/utilities.d.ts.map +1 -1
- package/lib/cjs/utilities.js +9 -29
- package/lib/esm/content.js +12 -70
- package/lib/esm/content.js.map +1 -1
- package/lib/esm/data-crud.js +49 -117
- package/lib/esm/data-crud.js.map +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/index.mjs +6 -0
- package/lib/esm/lists.js +37 -176
- package/lib/esm/lists.js.map +1 -1
- package/lib/esm/messaging.js +13 -59
- package/lib/esm/messaging.js.map +1 -1
- package/lib/esm/preferences.js +57 -0
- package/lib/esm/preferences.js.map +1 -0
- package/lib/esm/sdk-general.js +13 -45
- package/lib/esm/sdk-general.js.map +1 -1
- package/lib/esm/types/content.d.ts +12 -70
- package/lib/esm/types/data-crud.d.ts +24 -117
- package/lib/esm/types/filter-expressions.d.ts +35 -107
- package/lib/esm/types/index.d.ts +1 -0
- package/lib/esm/types/lists.d.ts +22 -177
- package/lib/esm/types/messaging.d.ts +8 -59
- package/lib/esm/types/preferences.d.ts +16 -0
- package/lib/esm/types/sdk-general.d.ts +23 -78
- package/lib/esm/types/utilities.d.ts +9 -29
- package/lib/esm/utilities.js +9 -29
- package/lib/esm/utilities.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,59 +13,37 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { Observable } from 'rxjs';
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
* to Halix web services. This value is set upon calling the initialize function with incoming event
|
|
18
|
-
* data.
|
|
16
|
+
* Authentication token for API requests. Set by initialize().
|
|
19
17
|
*/
|
|
20
18
|
export declare let getAuthToken: () => Observable<string>;
|
|
21
19
|
/**
|
|
22
|
-
*
|
|
23
|
-
* running in. The sandbox identifies the current solution. This value is set upon calling the
|
|
24
|
-
* initialize function with incoming event data.
|
|
20
|
+
* Sandbox key identifier for the current solution. Set by initialize().
|
|
25
21
|
*/
|
|
26
22
|
export declare let sandboxKey: string;
|
|
27
23
|
/**
|
|
28
|
-
*
|
|
29
|
-
* requests to. This value is set upon calling the initialize function with incoming event data.
|
|
24
|
+
* Halix service URL for API requests. Set by initialize().
|
|
30
25
|
*/
|
|
31
26
|
export declare let serviceAddress: string;
|
|
32
27
|
/**
|
|
33
|
-
*
|
|
34
|
-
* that the action is being performed on. The action subject's contents will differ depending on the
|
|
35
|
-
* context in which the action is being executed. This value is set upon calling the initialize
|
|
36
|
-
* function with incoming event data.
|
|
37
|
-
* - for formTemplateActions, the action subject is the data being edited on the form
|
|
38
|
-
* - for pageTemplateActions, the action subject is record containing the context variables and
|
|
39
|
-
* their corresponding values on the page
|
|
40
|
-
* - for objectSaveActions, the action subject is the object being saved
|
|
41
|
-
* - for calculatedFieldActions, the action subject is the object containing the calculated field
|
|
42
|
-
* - for singleValueActions, the action subject may differ depending on the caller
|
|
28
|
+
* Subject of the action (context-dependent: form data, page variables, object being saved, etc.). Set by initialize().
|
|
43
29
|
*/
|
|
44
30
|
export declare let actionSubject: any;
|
|
45
31
|
/**
|
|
46
|
-
*
|
|
47
|
-
* This value is set upon calling the initialize function with incoming event data.
|
|
32
|
+
* User context (user, userProxy, orgProxy, keys). Set by initialize().
|
|
48
33
|
*/
|
|
49
34
|
export declare let userContext: UserContext;
|
|
50
35
|
/**
|
|
51
|
-
*
|
|
52
|
-
* contain the values entered in the dialog. This value is set upon calling the initialize
|
|
53
|
-
* function with incoming event data.
|
|
36
|
+
* Parameters passed to the action (e.g., from input dialog). Set by initialize().
|
|
54
37
|
*/
|
|
55
38
|
export declare let params: string;
|
|
56
39
|
/**
|
|
57
|
-
*
|
|
58
|
-
* returned as an object with the HTTP response code and ActionResponse in the body field. If false,
|
|
59
|
-
* the ActionResponse will be returned directly. Typically, this does not need to be set by the
|
|
60
|
-
* action handler and should remain false.
|
|
40
|
+
* Response format flag (internal). Typically leave as false.
|
|
61
41
|
*/
|
|
62
42
|
export declare let useBody: boolean;
|
|
63
43
|
/**
|
|
64
|
-
*
|
|
65
|
-
* action handler to set up the SDK with incoming information, including context information, input
|
|
66
|
-
* parameters, and authentication information needed to make API requests to the Halix service.
|
|
44
|
+
* Initializes SDK with event data. Call at the beginning of action handler to set up authentication, context, and parameters.
|
|
67
45
|
*
|
|
68
|
-
* @param event -
|
|
46
|
+
* @param event - Event object with body containing IncomingEventBody
|
|
69
47
|
*/
|
|
70
48
|
export declare function initialize(event: {
|
|
71
49
|
body?: IncomingEventBody;
|
|
@@ -95,25 +73,14 @@ export interface IncomingEventBody {
|
|
|
95
73
|
params: Record<string, any>;
|
|
96
74
|
}
|
|
97
75
|
/**
|
|
98
|
-
*
|
|
76
|
+
* Base properties for action responses. Use specific response types: ListActionResponse, FormTemplateActionResponse, etc.
|
|
99
77
|
*/
|
|
100
78
|
export interface BaseActionResponse {
|
|
101
|
-
/**
|
|
102
|
-
* The type of action response
|
|
103
|
-
*
|
|
104
|
-
* listAction - Use when the action is being run from a list
|
|
105
|
-
* formTemplateAction - Use when the action is being run from a form template
|
|
106
|
-
* pageTemplateAction - Use when the action is being run from a page template
|
|
107
|
-
* objectSaveAction - Use when the action has been specified for use on object save events
|
|
108
|
-
* calculatedFieldAction - Use when the action is being used to determine calculated field values
|
|
109
|
-
* singleValueAction - Use when the action is being used to determine a single value in specific
|
|
110
|
-
* build-in platform events (e.g., determining shopping cart prices)
|
|
111
|
-
* error - Use when the action is not successful
|
|
112
|
-
*/
|
|
79
|
+
/** Response type: listAction, formTemplateAction, pageTemplateAction, objectSaveAction, calculatedFieldAction, singleValueAction, or error */
|
|
113
80
|
responseType: "listAction" | "formTemplateAction" | "pageTemplateAction" | "objectSaveAction" | "calculatedFieldAction" | "singleValueAction" | "error";
|
|
114
81
|
/** Whether the action is an error */
|
|
115
82
|
isError: boolean;
|
|
116
|
-
/**
|
|
83
|
+
/** Optional notification configurations */
|
|
117
84
|
notificationConfigs?: NotificationConfig[];
|
|
118
85
|
}
|
|
119
86
|
/**
|
|
@@ -121,8 +88,7 @@ export interface BaseActionResponse {
|
|
|
121
88
|
*/
|
|
122
89
|
export type ActionResponse = ListActionResponse | FormTemplateActionResponse | PageTemplateActionResponse | ObjectSaveActionResponse | CalculatedFieldActionResponse | SingleValueActionResponse;
|
|
123
90
|
/**
|
|
124
|
-
*
|
|
125
|
-
* successful action response.
|
|
91
|
+
* Notification configuration for triggering notifications from action responses.
|
|
126
92
|
*/
|
|
127
93
|
export interface NotificationConfig {
|
|
128
94
|
/** The ID of a notification definition setup within the solution */
|
|
@@ -167,9 +133,7 @@ export interface NotificationConfig {
|
|
|
167
133
|
};
|
|
168
134
|
}
|
|
169
135
|
/**
|
|
170
|
-
*
|
|
171
|
-
* properties are expected by the list framework unpon receiving an action response from an action
|
|
172
|
-
* handler.
|
|
136
|
+
* Response for actions run from lists.
|
|
173
137
|
*/
|
|
174
138
|
export interface ListActionResponse extends BaseActionResponse {
|
|
175
139
|
responseType: "listAction";
|
|
@@ -177,9 +141,7 @@ export interface ListActionResponse extends BaseActionResponse {
|
|
|
177
141
|
successMessage: string;
|
|
178
142
|
}
|
|
179
143
|
/**
|
|
180
|
-
*
|
|
181
|
-
* response. These properties are expected by the form framework unpon receiving an action response
|
|
182
|
-
* from an action handler.
|
|
144
|
+
* Response for actions run from forms.
|
|
183
145
|
*/
|
|
184
146
|
export interface FormTemplateActionResponse extends BaseActionResponse {
|
|
185
147
|
responseType: "formTemplateAction";
|
|
@@ -187,9 +149,7 @@ export interface FormTemplateActionResponse extends BaseActionResponse {
|
|
|
187
149
|
successMessage: string;
|
|
188
150
|
}
|
|
189
151
|
/**
|
|
190
|
-
*
|
|
191
|
-
* response. These properties are expected by the page framework unpon receiving an action response
|
|
192
|
-
* from an action handler.
|
|
152
|
+
* Response for actions run from pages.
|
|
193
153
|
*/
|
|
194
154
|
export interface PageTemplateActionResponse extends BaseActionResponse {
|
|
195
155
|
responseType: "pageTemplateAction";
|
|
@@ -198,9 +158,7 @@ export interface PageTemplateActionResponse extends BaseActionResponse {
|
|
|
198
158
|
refreshPage?: boolean;
|
|
199
159
|
}
|
|
200
160
|
/**
|
|
201
|
-
*
|
|
202
|
-
* response. These properties are expected by the object save framework unpon receiving an action
|
|
203
|
-
* response from an action handler.
|
|
161
|
+
* Response for actions triggered on object save events.
|
|
204
162
|
*/
|
|
205
163
|
export interface ObjectSaveActionResponse extends BaseActionResponse {
|
|
206
164
|
responseType: "objectSaveAction";
|
|
@@ -208,17 +166,14 @@ export interface ObjectSaveActionResponse extends BaseActionResponse {
|
|
|
208
166
|
successMessage: string;
|
|
209
167
|
}
|
|
210
168
|
/**
|
|
211
|
-
*
|
|
212
|
-
* action response. These properties are expected by the calculated field framework unpon receiving
|
|
213
|
-
* an action response from an action handler.
|
|
169
|
+
* Response for actions computing calculated field values.
|
|
214
170
|
*/
|
|
215
171
|
export interface CalculatedFieldActionResponse extends BaseActionResponse {
|
|
216
172
|
responseType: "calculatedFieldAction";
|
|
217
173
|
calculatedValue: any;
|
|
218
174
|
}
|
|
219
175
|
/**
|
|
220
|
-
*
|
|
221
|
-
* response. These properties are expected by the caller of the action.
|
|
176
|
+
* Response for actions returning a single value.
|
|
222
177
|
*/
|
|
223
178
|
export interface SingleValueActionResponse extends BaseActionResponse {
|
|
224
179
|
responseType: "singleValueAction";
|
|
@@ -233,28 +188,18 @@ export interface ErrorResponse {
|
|
|
233
188
|
errorMessage: string;
|
|
234
189
|
}
|
|
235
190
|
/**
|
|
236
|
-
*
|
|
237
|
-
* should return an ActionResponse response when the action is successful. If useBody is true, the
|
|
238
|
-
* response will be returned as an object with the HTTP response code and the ActionResponse in the
|
|
239
|
-
* body field. If useBody is false, the ActionResponse will be returned directly.
|
|
191
|
+
* Formats a success response. Returns ActionResponse directly, or wrapped with statusCode if useBody is true.
|
|
240
192
|
*
|
|
241
|
-
* @
|
|
242
|
-
*
|
|
243
|
-
* @returns Formatted success response; an ActionResponse unless useBody is true
|
|
193
|
+
* @returns ActionResponse or {statusCode: 200, body: string}
|
|
244
194
|
*/
|
|
245
195
|
export declare function prepareSuccessResponse(successResponse: ActionResponse): {
|
|
246
196
|
statusCode: number;
|
|
247
197
|
body: string;
|
|
248
198
|
} | ActionResponse;
|
|
249
199
|
/**
|
|
250
|
-
*
|
|
251
|
-
* should return an ErrorResponse response when the action is not successful. If useBody is true,
|
|
252
|
-
* the response will be returned as an object with the HTTP response code and the ErrorResponse in
|
|
253
|
-
* the body field. If useBody is false, the ErrorResponse will be returned directly.
|
|
254
|
-
*
|
|
255
|
-
* @param errorMessage - The error message
|
|
200
|
+
* Formats an error response. Returns ErrorResponse directly, or wrapped with statusCode if useBody is true.
|
|
256
201
|
*
|
|
257
|
-
* @returns
|
|
202
|
+
* @returns ErrorResponse or {statusCode: 400, body: string}
|
|
258
203
|
*/
|
|
259
204
|
export declare function prepareErrorResponse(errorMessage: string): {
|
|
260
205
|
statusCode: number;
|
|
@@ -24,49 +24,29 @@ export interface SortField {
|
|
|
24
24
|
autoSequence?: boolean;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
28
|
-
* attributes. Sorting by nested attributes in the form of a delimited attribute string are
|
|
29
|
-
* supported (e.g., "attribute.nestedAttribute").
|
|
27
|
+
* Sorts an array in-place by specified attributes. Supports nested attributes via dot notation (e.g., "user.name").
|
|
30
28
|
*
|
|
31
|
-
* @param
|
|
32
|
-
* @param sort - Array of sort field specifications
|
|
29
|
+
* @param sort - Array of SortField with attributeId, descending?, caseInsensitive?
|
|
33
30
|
* @returns The sorted array
|
|
34
31
|
*/
|
|
35
32
|
export declare function sortObjectArray<T>(array: Array<T>, sort: SortField[]): Array<T>;
|
|
36
33
|
/**
|
|
37
|
-
*
|
|
38
|
-
* are strings, the comparison is case-insensitive. If the values are numbers, the comparison is
|
|
39
|
-
* performed numerically.
|
|
34
|
+
* Compares two values for sorting. Handles strings (with optional case-insensitivity) and numbers.
|
|
40
35
|
*
|
|
41
|
-
* @
|
|
42
|
-
* @param valueB - Second value to compare
|
|
43
|
-
* @param descending - Whether to sort in descending order
|
|
44
|
-
* @param caseInsensitive - Whether to perform case-insensitive comparison for strings
|
|
45
|
-
*
|
|
46
|
-
* @returns Comparison result (-1, 0, or 1)
|
|
36
|
+
* @returns number - comparison result (-1, 0, or 1)
|
|
47
37
|
*/
|
|
48
38
|
export declare function compareValues(valueA: any, valueB: any, descending: boolean, caseInsensitive: boolean): number;
|
|
49
39
|
/**
|
|
50
|
-
*
|
|
51
|
-
* path. The path can include relationships. Relationship IDs may include a colon delimiter (e.g.,
|
|
52
|
-
* "accountMember:ownerAccountMemberKey") to specify the key of the related object. This is useful
|
|
53
|
-
* when an element has more than one relationship to the same object type. Otherwise, if only one
|
|
54
|
-
* relationship to the same object type exists, the key may be specified without the relationship ID
|
|
55
|
-
* (e.g., simply, "accountMember").
|
|
56
|
-
*
|
|
57
|
-
* @param object - The object to extract value from
|
|
58
|
-
* @param attribute - The attribute path (e.g., "user.address.city")
|
|
40
|
+
* Extracts a value from an object using dot-notation path. Supports relationships with colon delimiter (e.g., "accountMember:ownerAccountMemberKey").
|
|
59
41
|
*
|
|
42
|
+
* @param attribute - Dot-notation path (e.g., "user.address.city")
|
|
60
43
|
* @returns The extracted value
|
|
61
44
|
*/
|
|
62
45
|
export declare function getValueFromObject(object: any, attribute: string): any;
|
|
63
46
|
/**
|
|
64
|
-
*
|
|
65
|
-
* calls to the same function within a short period of time.
|
|
66
|
-
*
|
|
67
|
-
* @param fn - The function to debounce
|
|
68
|
-
* @param wait - The number of milliseconds to wait before calling the function
|
|
47
|
+
* Debounces a function call to prevent excessive execution within a short period.
|
|
69
48
|
*
|
|
70
|
-
* @
|
|
49
|
+
* @param wait - Milliseconds to wait (default: 200)
|
|
50
|
+
* @returns Debounced function
|
|
71
51
|
*/
|
|
72
52
|
export declare function debounceFn<T extends (...args: any[]) => void>(fn: T, wait?: number): (...args: Parameters<T>) => void;
|
package/lib/esm/utilities.js
CHANGED
|
@@ -10,12 +10,9 @@
|
|
|
10
10
|
// UTILITY FUNCTIONS
|
|
11
11
|
// ================================================================================
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
* attributes. Sorting by nested attributes in the form of a delimited attribute string are
|
|
15
|
-
* supported (e.g., "attribute.nestedAttribute").
|
|
13
|
+
* Sorts an array in-place by specified attributes. Supports nested attributes via dot notation (e.g., "user.name").
|
|
16
14
|
*
|
|
17
|
-
* @param
|
|
18
|
-
* @param sort - Array of sort field specifications
|
|
15
|
+
* @param sort - Array of SortField with attributeId, descending?, caseInsensitive?
|
|
19
16
|
* @returns The sorted array
|
|
20
17
|
*/
|
|
21
18
|
export function sortObjectArray(array, sort) {
|
|
@@ -33,16 +30,9 @@ export function sortObjectArray(array, sort) {
|
|
|
33
30
|
});
|
|
34
31
|
}
|
|
35
32
|
/**
|
|
36
|
-
*
|
|
37
|
-
* are strings, the comparison is case-insensitive. If the values are numbers, the comparison is
|
|
38
|
-
* performed numerically.
|
|
33
|
+
* Compares two values for sorting. Handles strings (with optional case-insensitivity) and numbers.
|
|
39
34
|
*
|
|
40
|
-
* @
|
|
41
|
-
* @param valueB - Second value to compare
|
|
42
|
-
* @param descending - Whether to sort in descending order
|
|
43
|
-
* @param caseInsensitive - Whether to perform case-insensitive comparison for strings
|
|
44
|
-
*
|
|
45
|
-
* @returns Comparison result (-1, 0, or 1)
|
|
35
|
+
* @returns number - comparison result (-1, 0, or 1)
|
|
46
36
|
*/
|
|
47
37
|
export function compareValues(valueA, valueB, descending, caseInsensitive) {
|
|
48
38
|
if (caseInsensitive && (typeof valueA === 'string' || valueA instanceof String)) {
|
|
@@ -74,16 +64,9 @@ export function compareValues(valueA, valueB, descending, caseInsensitive) {
|
|
|
74
64
|
return 0;
|
|
75
65
|
}
|
|
76
66
|
/**
|
|
77
|
-
*
|
|
78
|
-
* path. The path can include relationships. Relationship IDs may include a colon delimiter (e.g.,
|
|
79
|
-
* "accountMember:ownerAccountMemberKey") to specify the key of the related object. This is useful
|
|
80
|
-
* when an element has more than one relationship to the same object type. Otherwise, if only one
|
|
81
|
-
* relationship to the same object type exists, the key may be specified without the relationship ID
|
|
82
|
-
* (e.g., simply, "accountMember").
|
|
83
|
-
*
|
|
84
|
-
* @param object - The object to extract value from
|
|
85
|
-
* @param attribute - The attribute path (e.g., "user.address.city")
|
|
67
|
+
* Extracts a value from an object using dot-notation path. Supports relationships with colon delimiter (e.g., "accountMember:ownerAccountMemberKey").
|
|
86
68
|
*
|
|
69
|
+
* @param attribute - Dot-notation path (e.g., "user.address.city")
|
|
87
70
|
* @returns The extracted value
|
|
88
71
|
*/
|
|
89
72
|
export function getValueFromObject(object, attribute) {
|
|
@@ -108,13 +91,10 @@ export function getValueFromObject(object, attribute) {
|
|
|
108
91
|
return value;
|
|
109
92
|
}
|
|
110
93
|
/**
|
|
111
|
-
*
|
|
112
|
-
* calls to the same function within a short period of time.
|
|
113
|
-
*
|
|
114
|
-
* @param fn - The function to debounce
|
|
115
|
-
* @param wait - The number of milliseconds to wait before calling the function
|
|
94
|
+
* Debounces a function call to prevent excessive execution within a short period.
|
|
116
95
|
*
|
|
117
|
-
* @
|
|
96
|
+
* @param wait - Milliseconds to wait (default: 200)
|
|
97
|
+
* @returns Debounced function
|
|
118
98
|
*/
|
|
119
99
|
export function debounceFn(fn, wait = 200) {
|
|
120
100
|
let timeout;
|
package/lib/esm/utilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/utilities.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,mCAAmC;AACnC,EAAE;AACF,oEAAoE;AACpE,0EAA0E;AAC1E,EAAE;AACF,6DAA6D;AAC7D,oDAAoD;AAiCpD,mFAAmF;AACnF,oBAAoB;AACpB,mFAAmF;AAEnF
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/utilities.ts"],"names":[],"mappings":"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"}
|