@thoughtspot/visual-embed-sdk 1.41.0-pre-render-1 → 1.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/cjs/package.json +3 -3
  2. package/cjs/src/embed/app.d.ts +6 -1
  3. package/cjs/src/embed/app.d.ts.map +1 -1
  4. package/cjs/src/embed/app.js +19 -1
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/app.spec.js +60 -3
  7. package/cjs/src/embed/app.spec.js.map +1 -1
  8. package/cjs/src/embed/bodyless-conversation.d.ts +0 -1
  9. package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
  10. package/cjs/src/embed/bodyless-conversation.js +3 -7
  11. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  12. package/cjs/src/embed/conversation.d.ts +0 -1
  13. package/cjs/src/embed/conversation.d.ts.map +1 -1
  14. package/cjs/src/embed/conversation.js +2 -7
  15. package/cjs/src/embed/conversation.js.map +1 -1
  16. package/cjs/src/embed/liveboard.d.ts +0 -1
  17. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  18. package/cjs/src/embed/liveboard.js +4 -27
  19. package/cjs/src/embed/liveboard.js.map +1 -1
  20. package/cjs/src/embed/liveboard.spec.js +25 -31
  21. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  22. package/cjs/src/embed/sage.d.ts +0 -1
  23. package/cjs/src/embed/sage.d.ts.map +1 -1
  24. package/cjs/src/embed/sage.js +6 -10
  25. package/cjs/src/embed/sage.js.map +1 -1
  26. package/cjs/src/embed/search-bar.d.ts +0 -1
  27. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  28. package/cjs/src/embed/search-bar.js +7 -11
  29. package/cjs/src/embed/search-bar.js.map +1 -1
  30. package/cjs/src/embed/search.d.ts +0 -1
  31. package/cjs/src/embed/search.d.ts.map +1 -1
  32. package/cjs/src/embed/search.js +8 -7
  33. package/cjs/src/embed/search.js.map +1 -1
  34. package/cjs/src/embed/ts-embed.d.ts +4 -6
  35. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  36. package/cjs/src/embed/ts-embed.js +20 -21
  37. package/cjs/src/embed/ts-embed.js.map +1 -1
  38. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
  39. package/cjs/src/embed/ts-embed.spec.js +122 -0
  40. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  41. package/cjs/src/errors.d.ts +10 -0
  42. package/cjs/src/errors.d.ts.map +1 -1
  43. package/cjs/src/errors.js +11 -1
  44. package/cjs/src/errors.js.map +1 -1
  45. package/cjs/src/index.d.ts +2 -2
  46. package/cjs/src/index.d.ts.map +1 -1
  47. package/cjs/src/index.js +3 -1
  48. package/cjs/src/index.js.map +1 -1
  49. package/cjs/src/react/index.d.ts +1 -1
  50. package/cjs/src/react/index.d.ts.map +1 -1
  51. package/cjs/src/react/index.js +2 -1
  52. package/cjs/src/react/index.js.map +1 -1
  53. package/cjs/src/types.d.ts +135 -17
  54. package/cjs/src/types.d.ts.map +1 -1
  55. package/cjs/src/types.js +40 -21
  56. package/cjs/src/types.js.map +1 -1
  57. package/cjs/src/utils/custom-actions.d.ts +12 -0
  58. package/cjs/src/utils/custom-actions.d.ts.map +1 -0
  59. package/cjs/src/utils/custom-actions.js +180 -0
  60. package/cjs/src/utils/custom-actions.js.map +1 -0
  61. package/cjs/src/utils/custom-actions.spec.d.ts +2 -0
  62. package/cjs/src/utils/custom-actions.spec.d.ts.map +1 -0
  63. package/cjs/src/utils/custom-actions.spec.js +399 -0
  64. package/cjs/src/utils/custom-actions.spec.js.map +1 -0
  65. package/cjs/src/utils/processData.d.ts.map +1 -1
  66. package/cjs/src/utils/processData.js +10 -0
  67. package/cjs/src/utils/processData.js.map +1 -1
  68. package/cjs/src/utils/processData.spec.js +11 -0
  69. package/cjs/src/utils/processData.spec.js.map +1 -1
  70. package/cjs/src/utils.d.ts +7 -0
  71. package/cjs/src/utils.d.ts.map +1 -1
  72. package/cjs/src/utils.js +11 -1
  73. package/cjs/src/utils.js.map +1 -1
  74. package/cjs/src/utils.spec.js +28 -0
  75. package/cjs/src/utils.spec.js.map +1 -1
  76. package/dist/{index-CmEQfuE3.js → index-B_mxAan8.js} +1 -1
  77. package/dist/src/embed/app.d.ts +6 -1
  78. package/dist/src/embed/app.d.ts.map +1 -1
  79. package/dist/src/embed/bodyless-conversation.d.ts +0 -1
  80. package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
  81. package/dist/src/embed/conversation.d.ts +0 -1
  82. package/dist/src/embed/conversation.d.ts.map +1 -1
  83. package/dist/src/embed/liveboard.d.ts +0 -1
  84. package/dist/src/embed/liveboard.d.ts.map +1 -1
  85. package/dist/src/embed/sage.d.ts +0 -1
  86. package/dist/src/embed/sage.d.ts.map +1 -1
  87. package/dist/src/embed/search-bar.d.ts +0 -1
  88. package/dist/src/embed/search-bar.d.ts.map +1 -1
  89. package/dist/src/embed/search.d.ts +0 -1
  90. package/dist/src/embed/search.d.ts.map +1 -1
  91. package/dist/src/embed/ts-embed.d.ts +4 -6
  92. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  93. package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
  94. package/dist/src/errors.d.ts +10 -0
  95. package/dist/src/errors.d.ts.map +1 -1
  96. package/dist/src/index.d.ts +2 -2
  97. package/dist/src/index.d.ts.map +1 -1
  98. package/dist/src/react/index.d.ts +1 -1
  99. package/dist/src/react/index.d.ts.map +1 -1
  100. package/dist/src/types.d.ts +135 -17
  101. package/dist/src/types.d.ts.map +1 -1
  102. package/dist/src/utils/custom-actions.d.ts +12 -0
  103. package/dist/src/utils/custom-actions.d.ts.map +1 -0
  104. package/dist/src/utils/custom-actions.spec.d.ts +2 -0
  105. package/dist/src/utils/custom-actions.spec.d.ts.map +1 -0
  106. package/dist/src/utils/processData.d.ts.map +1 -1
  107. package/dist/src/utils.d.ts +7 -0
  108. package/dist/src/utils.d.ts.map +1 -1
  109. package/dist/tsembed-react.es.js +1704 -250
  110. package/dist/tsembed-react.js +1703 -249
  111. package/dist/tsembed.es.js +1704 -250
  112. package/dist/tsembed.js +1703 -249
  113. package/dist/visual-embed-sdk-react-full.d.ts +146 -31
  114. package/dist/visual-embed-sdk-react.d.ts +146 -31
  115. package/dist/visual-embed-sdk.d.ts +146 -31
  116. package/lib/package.json +3 -3
  117. package/lib/src/embed/app.d.ts +6 -1
  118. package/lib/src/embed/app.d.ts.map +1 -1
  119. package/lib/src/embed/app.js +19 -1
  120. package/lib/src/embed/app.js.map +1 -1
  121. package/lib/src/embed/app.spec.js +60 -3
  122. package/lib/src/embed/app.spec.js.map +1 -1
  123. package/lib/src/embed/bodyless-conversation.d.ts +0 -1
  124. package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
  125. package/lib/src/embed/bodyless-conversation.js +3 -7
  126. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  127. package/lib/src/embed/conversation.d.ts +0 -1
  128. package/lib/src/embed/conversation.d.ts.map +1 -1
  129. package/lib/src/embed/conversation.js +2 -7
  130. package/lib/src/embed/conversation.js.map +1 -1
  131. package/lib/src/embed/liveboard.d.ts +0 -1
  132. package/lib/src/embed/liveboard.d.ts.map +1 -1
  133. package/lib/src/embed/liveboard.js +4 -27
  134. package/lib/src/embed/liveboard.js.map +1 -1
  135. package/lib/src/embed/liveboard.spec.js +25 -31
  136. package/lib/src/embed/liveboard.spec.js.map +1 -1
  137. package/lib/src/embed/sage.d.ts +0 -1
  138. package/lib/src/embed/sage.d.ts.map +1 -1
  139. package/lib/src/embed/sage.js +6 -10
  140. package/lib/src/embed/sage.js.map +1 -1
  141. package/lib/src/embed/search-bar.d.ts +0 -1
  142. package/lib/src/embed/search-bar.d.ts.map +1 -1
  143. package/lib/src/embed/search-bar.js +7 -11
  144. package/lib/src/embed/search-bar.js.map +1 -1
  145. package/lib/src/embed/search.d.ts +0 -1
  146. package/lib/src/embed/search.d.ts.map +1 -1
  147. package/lib/src/embed/search.js +8 -7
  148. package/lib/src/embed/search.js.map +1 -1
  149. package/lib/src/embed/ts-embed.d.ts +4 -6
  150. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  151. package/lib/src/embed/ts-embed.js +20 -21
  152. package/lib/src/embed/ts-embed.js.map +1 -1
  153. package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
  154. package/lib/src/embed/ts-embed.spec.js +123 -1
  155. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  156. package/lib/src/errors.d.ts +10 -0
  157. package/lib/src/errors.d.ts.map +1 -1
  158. package/lib/src/errors.js +10 -0
  159. package/lib/src/errors.js.map +1 -1
  160. package/lib/src/index.d.ts +2 -2
  161. package/lib/src/index.d.ts.map +1 -1
  162. package/lib/src/index.js +2 -2
  163. package/lib/src/index.js.map +1 -1
  164. package/lib/src/react/index.d.ts +1 -1
  165. package/lib/src/react/index.d.ts.map +1 -1
  166. package/lib/src/react/index.js +1 -1
  167. package/lib/src/react/index.js.map +1 -1
  168. package/lib/src/types.d.ts +135 -17
  169. package/lib/src/types.d.ts.map +1 -1
  170. package/lib/src/types.js +39 -20
  171. package/lib/src/types.js.map +1 -1
  172. package/lib/src/utils/custom-actions.d.ts +12 -0
  173. package/lib/src/utils/custom-actions.d.ts.map +1 -0
  174. package/lib/src/utils/custom-actions.js +175 -0
  175. package/lib/src/utils/custom-actions.js.map +1 -0
  176. package/lib/src/utils/custom-actions.spec.d.ts +2 -0
  177. package/lib/src/utils/custom-actions.spec.d.ts.map +1 -0
  178. package/lib/src/utils/custom-actions.spec.js +397 -0
  179. package/lib/src/utils/custom-actions.spec.js.map +1 -0
  180. package/lib/src/utils/processData.d.ts.map +1 -1
  181. package/lib/src/utils/processData.js +10 -0
  182. package/lib/src/utils/processData.js.map +1 -1
  183. package/lib/src/utils/processData.spec.js +11 -0
  184. package/lib/src/utils/processData.spec.js.map +1 -1
  185. package/lib/src/utils.d.ts +7 -0
  186. package/lib/src/utils.d.ts.map +1 -1
  187. package/lib/src/utils.js +9 -0
  188. package/lib/src/utils.js.map +1 -1
  189. package/lib/src/utils.spec.js +29 -1
  190. package/lib/src/utils.spec.js.map +1 -1
  191. package/lib/src/visual-embed-sdk.d.ts +147 -32
  192. package/package.json +3 -3
  193. package/src/embed/app.spec.ts +85 -3
  194. package/src/embed/app.ts +21 -0
  195. package/src/embed/bodyless-conversation.ts +3 -8
  196. package/src/embed/conversation.ts +2 -17
  197. package/src/embed/liveboard.spec.ts +35 -35
  198. package/src/embed/liveboard.ts +4 -32
  199. package/src/embed/sage.ts +7 -12
  200. package/src/embed/search-bar.tsx +7 -14
  201. package/src/embed/search.ts +7 -18
  202. package/src/embed/ts-embed.spec.ts +136 -2
  203. package/src/embed/ts-embed.ts +25 -28
  204. package/src/errors.ts +11 -0
  205. package/src/index.ts +4 -0
  206. package/src/react/index.tsx +1 -0
  207. package/src/types.ts +198 -76
  208. package/src/utils/custom-actions.spec.ts +431 -0
  209. package/src/utils/custom-actions.ts +217 -0
  210. package/src/utils/processData.spec.ts +12 -0
  211. package/src/utils/processData.ts +10 -0
  212. package/src/utils.spec.ts +34 -0
  213. package/src/utils.ts +10 -0
  214. package/dist/index-BDlM0f0T.js +0 -7371
  215. package/dist/index-D1pyb7RG.js +0 -7371
  216. package/dist/index-DeFzsyFF.js +0 -7371
  217. package/dist/index-Dpf0rd6w.js +0 -7371
  218. package/dist/index-UuEbsISo.js +0 -7447
  219. package/dist/index-e3Uw3YFO.js +0 -7371
  220. package/dist/index-k7pkZMhx.js +0 -7371
@@ -0,0 +1,12 @@
1
+ import { CustomAction } from '../types';
2
+ export interface CustomActionsValidationResult {
3
+ actions: CustomAction[];
4
+ errors: string[];
5
+ }
6
+ /**
7
+ * Validates and processes custom actions
8
+ * @param customActions - Array of custom actions to validate
9
+ * @returns Object containing valid actions and any validation errors
10
+ */
11
+ export declare const getCustomActions: (customActions: CustomAction[]) => CustomActionsValidationResult;
12
+ //# sourceMappingURL=custom-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-actions.d.ts","sourceRoot":"","sources":["../../../src/utils/custom-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,UAAU,CAAC;AAKnF,MAAM,WAAW,6BAA6B;IAC1C,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AA6JD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,kBAAmB,YAAY,EAAE,KAAG,6BA8ChE,CAAC"}
@@ -0,0 +1,175 @@
1
+ import { CustomActionsPosition, CustomActionTarget } from '../types';
2
+ import { arrayIncludesString } from '../utils';
3
+ import sortBy from 'lodash/sortBy';
4
+ import { CUSTOM_ACTIONS_ERROR_MESSAGE } from '../errors';
5
+ /**
6
+ * Configuration for custom action validation rules.
7
+ * Defines allowed positions, metadata IDs, data model IDs, and fields for each target
8
+ * type.
9
+ *
10
+ */
11
+ const customActionValidationConfig = {
12
+ [CustomActionTarget.LIVEBOARD]: {
13
+ positions: [CustomActionsPosition.PRIMARY, CustomActionsPosition.MENU],
14
+ allowedMetadataIds: ['liveboardIds'],
15
+ allowedDataModelIds: [],
16
+ allowedFields: ['name', 'id', 'position', 'target', 'metadataIds', 'orgIds', 'groupIds'],
17
+ },
18
+ [CustomActionTarget.VIZ]: {
19
+ positions: [CustomActionsPosition.MENU, CustomActionsPosition.PRIMARY, CustomActionsPosition.CONTEXTMENU],
20
+ allowedMetadataIds: ['liveboardIds', 'vizIds', 'answerIds'],
21
+ allowedDataModelIds: ['modelIds', 'modelColumnNames'],
22
+ allowedFields: ['name', 'id', 'position', 'target', 'metadataIds', 'orgIds', 'groupIds', 'dataModelIds'],
23
+ },
24
+ [CustomActionTarget.ANSWER]: {
25
+ positions: [CustomActionsPosition.MENU, CustomActionsPosition.PRIMARY, CustomActionsPosition.CONTEXTMENU],
26
+ allowedMetadataIds: ['answerIds'],
27
+ allowedDataModelIds: ['modelIds', 'modelColumnNames'],
28
+ allowedFields: ['name', 'id', 'position', 'target', 'metadataIds', 'orgIds', 'groupIds', 'dataModelIds'],
29
+ },
30
+ [CustomActionTarget.SPOTTER]: {
31
+ positions: [CustomActionsPosition.MENU, CustomActionsPosition.CONTEXTMENU],
32
+ allowedMetadataIds: [],
33
+ allowedDataModelIds: ['modelIds'],
34
+ allowedFields: ['name', 'id', 'position', 'target', 'orgIds', 'groupIds', 'dataModelIds'],
35
+ },
36
+ };
37
+ /**
38
+ * Validates a single custom action based on its target type
39
+ * @param action - The custom action to validate
40
+ * @param primaryActionsPerTarget - Map to track primary actions per target
41
+ * @returns CustomActionValidation with isValid flag and reason string
42
+ *
43
+ * @hidden
44
+ */
45
+ const validateCustomAction = (action, primaryActionsPerTarget) => {
46
+ const { id: actionId, target: targetType, position, metadataIds, dataModelIds } = action;
47
+ // Check if target type is supported
48
+ if (!customActionValidationConfig[targetType]) {
49
+ const errorMessage = CUSTOM_ACTIONS_ERROR_MESSAGE.UNSUPPORTED_TARGET(actionId, targetType);
50
+ return { isValid: false, errors: [errorMessage] };
51
+ }
52
+ const config = customActionValidationConfig[targetType];
53
+ const errors = [];
54
+ // Validate position
55
+ if (!arrayIncludesString(config.positions, position)) {
56
+ const supportedPositions = config.positions.join(', ');
57
+ errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_POSITION(position, targetType, supportedPositions));
58
+ }
59
+ // Validate metadata IDs
60
+ if (metadataIds) {
61
+ const invalidMetadataIds = Object.keys(metadataIds).filter((key) => !arrayIncludesString(config.allowedMetadataIds, key));
62
+ if (invalidMetadataIds.length > 0) {
63
+ const supportedMetadataIds = config.allowedMetadataIds.length > 0 ? config.allowedMetadataIds.join(', ') : 'none';
64
+ errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_METADATA_IDS(targetType, invalidMetadataIds, supportedMetadataIds));
65
+ }
66
+ }
67
+ // Validate data model IDs
68
+ if (dataModelIds) {
69
+ const invalidDataModelIds = Object.keys(dataModelIds).filter((key) => !arrayIncludesString(config.allowedDataModelIds, key));
70
+ if (invalidDataModelIds.length > 0) {
71
+ const supportedDataModelIds = config.allowedDataModelIds.length > 0 ? config.allowedDataModelIds.join(', ') : 'none';
72
+ errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_DATA_MODEL_IDS(targetType, invalidDataModelIds, supportedDataModelIds));
73
+ }
74
+ }
75
+ // Validate allowed fields
76
+ const actionKeys = Object.keys(action);
77
+ const invalidFields = actionKeys.filter((key) => !arrayIncludesString(config.allowedFields, key));
78
+ if (invalidFields.length > 0) {
79
+ const supportedFields = config.allowedFields.join(', ');
80
+ errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_FIELDS(targetType, invalidFields, supportedFields));
81
+ }
82
+ return {
83
+ isValid: errors.length === 0,
84
+ errors,
85
+ };
86
+ };
87
+ /**
88
+ * Validates basic action structure and required fields
89
+ * @param action - The action to validate
90
+ * @returns Object containing validation result and missing fields
91
+ *
92
+ * @hidden
93
+ */
94
+ const validateActionStructure = (action) => {
95
+ if (!action || typeof action !== 'object') {
96
+ return { isValid: false, missingFields: [] };
97
+ }
98
+ // Check for all missing required fields
99
+ const missingFields = ['id', 'name', 'target', 'position'].filter(field => !action[field]);
100
+ return { isValid: missingFields.length === 0, missingFields };
101
+ };
102
+ /**
103
+ * Checks for duplicate IDs among actions
104
+ * @param actions - Array of actions to check
105
+ * @returns Object containing filtered actions and duplicate errors
106
+ *
107
+ * @hidden
108
+ */
109
+ const filterDuplicateIds = (actions) => {
110
+ const idMap = actions.reduce((map, action) => {
111
+ const list = map.get(action.id) || [];
112
+ list.push(action);
113
+ map.set(action.id, list);
114
+ return map;
115
+ }, new Map());
116
+ const { actions: actionsWithUniqueIds, errors } = Array.from(idMap.entries()).reduce((acc, [id, actionsWithSameId]) => {
117
+ if (actionsWithSameId.length === 1) {
118
+ acc.actions.push(actionsWithSameId[0]);
119
+ }
120
+ else {
121
+ // Keep the first action and add error for duplicates
122
+ acc.actions.push(actionsWithSameId[0]);
123
+ const duplicateNames = actionsWithSameId.slice(1).map(action => action.name);
124
+ acc.errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.DUPLICATE_IDS(id, duplicateNames, actionsWithSameId[0].name));
125
+ }
126
+ return acc;
127
+ }, { actions: [], errors: [] });
128
+ return { actions: actionsWithUniqueIds, errors };
129
+ };
130
+ /**
131
+ * Validates and processes custom actions
132
+ * @param customActions - Array of custom actions to validate
133
+ * @returns Object containing valid actions and any validation errors
134
+ */
135
+ export const getCustomActions = (customActions) => {
136
+ const errors = [];
137
+ const primaryActionsPerTarget = new Map();
138
+ if (!customActions || !Array.isArray(customActions)) {
139
+ return { actions: [], errors: [] };
140
+ }
141
+ // Step 1: Handle invalid actions first (null, undefined, missing required
142
+ // fields)
143
+ const validActions = customActions.filter(action => {
144
+ const validation = validateActionStructure(action);
145
+ if (!validation.isValid) {
146
+ if (!action || typeof action !== 'object') {
147
+ errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_ACTION_OBJECT);
148
+ }
149
+ else {
150
+ errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.MISSING_REQUIRED_FIELDS(action.id, validation.missingFields));
151
+ }
152
+ return false;
153
+ }
154
+ return true;
155
+ });
156
+ // Step 2: Check for duplicate IDs among valid actions
157
+ const { actions: actionsWithUniqueIds, errors: duplicateErrors } = filterDuplicateIds(validActions);
158
+ // Add duplicate errors to the errors array
159
+ duplicateErrors.forEach(error => errors.push(error));
160
+ // Step 3: Validate actions with unique IDs
161
+ const finalValidActions = [];
162
+ actionsWithUniqueIds.forEach((action) => {
163
+ const { isValid, errors: validationErrors } = validateCustomAction(action, primaryActionsPerTarget);
164
+ validationErrors.forEach(error => errors.push(error));
165
+ if (isValid) {
166
+ finalValidActions.push(action);
167
+ }
168
+ });
169
+ const sortedActions = sortBy(finalValidActions, (a) => a.name.toLocaleLowerCase());
170
+ return {
171
+ actions: sortedActions,
172
+ errors: errors,
173
+ };
174
+ };
175
+ //# sourceMappingURL=custom-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-actions.js","sourceRoot":"","sources":["../../../src/utils/custom-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=custom-actions.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-actions.spec.d.ts","sourceRoot":"","sources":["../../../src/utils/custom-actions.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,397 @@
1
+ import { getCustomActions } from './custom-actions';
2
+ import { CustomActionsPosition, CustomActionTarget } from '../types';
3
+ // Mock logger
4
+ jest.mock('./logger', () => ({
5
+ logger: {
6
+ warn: jest.fn(),
7
+ error: jest.fn(),
8
+ },
9
+ }));
10
+ describe('getCustomActions function', () => {
11
+ describe('Static getCustomActions method', () => {
12
+ test('should return empty result for empty array', () => {
13
+ const result = getCustomActions([]);
14
+ expect(result.actions).toEqual([]);
15
+ expect(result.errors).toEqual([]);
16
+ });
17
+ test('should return empty result for null/undefined input', () => {
18
+ const result1 = getCustomActions(null);
19
+ expect(result1.actions).toEqual([]);
20
+ expect(result1.errors).toEqual([]);
21
+ const result2 = getCustomActions(undefined);
22
+ expect(result2.actions).toEqual([]);
23
+ expect(result2.errors).toEqual([]);
24
+ });
25
+ test('should validate and return valid actions', () => {
26
+ const actions = [
27
+ {
28
+ name: 'Test Action',
29
+ id: 'test-id',
30
+ target: CustomActionTarget.LIVEBOARD,
31
+ position: CustomActionsPosition.PRIMARY,
32
+ },
33
+ ];
34
+ const result = getCustomActions(actions);
35
+ expect(result.actions).toEqual(actions);
36
+ expect(result.errors).toEqual([]);
37
+ });
38
+ test('should reject invalid actions and collect errors', () => {
39
+ const actions = [
40
+ {
41
+ name: 'Valid Action',
42
+ id: 'valid-id',
43
+ target: CustomActionTarget.LIVEBOARD,
44
+ position: CustomActionsPosition.PRIMARY,
45
+ },
46
+ {
47
+ name: 'Invalid Action',
48
+ id: 'invalid-id',
49
+ target: CustomActionTarget.SPOTTER,
50
+ position: CustomActionsPosition.PRIMARY, // Invalid for SPOTTER
51
+ },
52
+ ];
53
+ const result = getCustomActions(actions);
54
+ expect(result.actions).toEqual([actions[0]]);
55
+ expect(result.errors).toHaveLength(1);
56
+ expect(result.errors[0]).toContain("Position 'PRIMARY' is not supported for spotter-level custom actions. Supported positions: MENU, CONTEXTMENU");
57
+ });
58
+ test('should sort actions by name', () => {
59
+ const actions = [
60
+ {
61
+ name: 'Zebra Action',
62
+ id: 'zebra-id',
63
+ target: CustomActionTarget.LIVEBOARD,
64
+ position: CustomActionsPosition.PRIMARY,
65
+ },
66
+ {
67
+ name: 'Alpha Action',
68
+ id: 'alpha-id',
69
+ target: CustomActionTarget.LIVEBOARD,
70
+ position: CustomActionsPosition.MENU,
71
+ },
72
+ ];
73
+ const result = getCustomActions(actions);
74
+ expect(result.actions).toHaveLength(2);
75
+ expect(result.actions[0].name).toBe('Alpha Action');
76
+ expect(result.actions[1].name).toBe('Zebra Action');
77
+ });
78
+ });
79
+ describe('Input Validation', () => {
80
+ test('should return false for null action', () => {
81
+ const result = getCustomActions([null]);
82
+ expect(result.actions).toEqual([]);
83
+ expect(result.errors).toHaveLength(1);
84
+ expect(result.errors[0]).toContain('Custom Action Validation Error: Invalid action object provided');
85
+ });
86
+ test('should return false for undefined action', () => {
87
+ const result = getCustomActions([undefined]);
88
+ expect(result.actions).toEqual([]);
89
+ expect(result.errors).toHaveLength(1);
90
+ expect(result.errors[0]).toContain('Custom Action Validation Error: Invalid action object provided');
91
+ });
92
+ test('should return false for non-object action', () => {
93
+ const result = getCustomActions(['string']);
94
+ expect(result.actions).toEqual([]);
95
+ expect(result.errors).toHaveLength(1);
96
+ expect(result.errors[0]).toContain('Custom Action Validation Error: Invalid action object provided');
97
+ });
98
+ test('should return false for action missing id', () => {
99
+ const action = {
100
+ name: 'Test Action',
101
+ target: CustomActionTarget.LIVEBOARD,
102
+ position: CustomActionsPosition.PRIMARY,
103
+ };
104
+ const result = getCustomActions([action]);
105
+ expect(result.actions).toEqual([]);
106
+ expect(result.errors).toHaveLength(1);
107
+ expect(result.errors[0]).toContain("Missing required fields: id");
108
+ });
109
+ test('should return false for action missing name', () => {
110
+ const action = {
111
+ id: 'test-id',
112
+ target: CustomActionTarget.LIVEBOARD,
113
+ position: CustomActionsPosition.PRIMARY,
114
+ };
115
+ const result = getCustomActions([action]);
116
+ expect(result.actions).toEqual([]);
117
+ expect(result.errors).toHaveLength(1);
118
+ expect(result.errors[0]).toContain("Missing required fields: name");
119
+ });
120
+ test('should return false for action missing target', () => {
121
+ const action = {
122
+ id: 'test-id',
123
+ name: 'Test Action',
124
+ position: CustomActionsPosition.PRIMARY,
125
+ };
126
+ const result = getCustomActions([action]);
127
+ expect(result.actions).toEqual([]);
128
+ expect(result.errors).toHaveLength(1);
129
+ expect(result.errors[0]).toContain("Missing required fields: target");
130
+ });
131
+ test('should return false for action missing position', () => {
132
+ const action = {
133
+ id: 'test-id',
134
+ name: 'Test Action',
135
+ target: CustomActionTarget.LIVEBOARD,
136
+ };
137
+ const result = getCustomActions([action]);
138
+ expect(result.actions).toEqual([]);
139
+ expect(result.errors).toHaveLength(1);
140
+ expect(result.errors[0]).toContain("Missing required fields: position");
141
+ });
142
+ });
143
+ describe('Target Type Validation', () => {
144
+ test('should reject unsupported target type', () => {
145
+ const action = {
146
+ id: 'test-id',
147
+ name: 'Test Action',
148
+ target: 'UNSUPPORTED',
149
+ position: CustomActionsPosition.PRIMARY,
150
+ };
151
+ const result = getCustomActions([action]);
152
+ expect(result.actions).toEqual([]);
153
+ expect(result.errors).toHaveLength(1);
154
+ expect(result.errors[0]).toContain("Target type 'UNSUPPORTED' is not supported");
155
+ });
156
+ test('should accept LIVEBOARD target type', () => {
157
+ const action = {
158
+ id: 'test-id',
159
+ name: 'Test Action',
160
+ target: CustomActionTarget.LIVEBOARD,
161
+ position: CustomActionsPosition.PRIMARY,
162
+ };
163
+ const result = getCustomActions([action]);
164
+ expect(result.actions).toEqual([action]);
165
+ expect(result.errors).toEqual([]);
166
+ });
167
+ test('should accept VIZ target type', () => {
168
+ const action = {
169
+ id: 'test-id',
170
+ name: 'Test Action',
171
+ target: CustomActionTarget.VIZ,
172
+ position: CustomActionsPosition.MENU,
173
+ };
174
+ const result = getCustomActions([action]);
175
+ expect(result.actions).toEqual([action]);
176
+ expect(result.errors).toEqual([]);
177
+ });
178
+ test('should accept ANSWER target type', () => {
179
+ const action = {
180
+ id: 'test-id',
181
+ name: 'Test Action',
182
+ target: CustomActionTarget.ANSWER,
183
+ position: CustomActionsPosition.MENU,
184
+ };
185
+ const result = getCustomActions([action]);
186
+ expect(result.actions).toEqual([action]);
187
+ expect(result.errors).toEqual([]);
188
+ });
189
+ test('should accept SPOTTER target type', () => {
190
+ const action = {
191
+ id: 'test-id',
192
+ name: 'Test Action',
193
+ target: CustomActionTarget.SPOTTER,
194
+ position: CustomActionsPosition.MENU,
195
+ };
196
+ const result = getCustomActions([action]);
197
+ expect(result.actions).toEqual([action]);
198
+ expect(result.errors).toEqual([]);
199
+ });
200
+ });
201
+ describe('Position Validation', () => {
202
+ test('should reject invalid position for LIVEBOARD', () => {
203
+ const action = {
204
+ id: 'test-id',
205
+ name: 'Test Action',
206
+ target: CustomActionTarget.LIVEBOARD,
207
+ position: CustomActionsPosition.CONTEXTMENU, // Invalid for LIVEBOARD
208
+ };
209
+ const result = getCustomActions([action]);
210
+ expect(result.actions).toEqual([]);
211
+ expect(result.errors).toHaveLength(1);
212
+ expect(result.errors).toContain("Position 'CONTEXTMENU' is not supported for liveboard-level custom actions. Supported positions: PRIMARY, MENU");
213
+ });
214
+ test('should reject invalid position for SPOTTER', () => {
215
+ const action = {
216
+ id: 'test-id',
217
+ name: 'Test Action',
218
+ target: CustomActionTarget.SPOTTER,
219
+ position: CustomActionsPosition.PRIMARY, // Invalid for SPOTTER
220
+ };
221
+ const result = getCustomActions([action]);
222
+ expect(result.actions).toEqual([]);
223
+ expect(result.errors).toHaveLength(1);
224
+ expect(result.errors[0]).toContain("Position 'PRIMARY' is not supported for spotter-level custom actions. Supported positions: MENU, CONTEXTMENU");
225
+ });
226
+ test('should accept valid positions for LIVEBOARD', () => {
227
+ const primaryAction = {
228
+ id: 'primary-id',
229
+ name: 'Primary Action',
230
+ target: CustomActionTarget.LIVEBOARD,
231
+ position: CustomActionsPosition.PRIMARY,
232
+ };
233
+ const menuAction = {
234
+ id: 'menu-id',
235
+ name: 'Menu Action',
236
+ target: CustomActionTarget.LIVEBOARD,
237
+ position: CustomActionsPosition.MENU,
238
+ };
239
+ const result = getCustomActions([primaryAction, menuAction]);
240
+ expect(result.actions).toHaveLength(2);
241
+ expect(result.errors).toEqual([]);
242
+ });
243
+ });
244
+ describe('Metadata IDs Validation', () => {
245
+ test('should reject invalid metadata IDs for LIVEBOARD', () => {
246
+ const action = {
247
+ id: 'test-id',
248
+ name: 'Test Action',
249
+ target: CustomActionTarget.LIVEBOARD,
250
+ position: CustomActionsPosition.PRIMARY,
251
+ metadataIds: {
252
+ invalidId: 'some-value',
253
+ },
254
+ };
255
+ const result = getCustomActions([action]);
256
+ expect(result.actions).toEqual([]);
257
+ expect(result.errors).toHaveLength(1);
258
+ expect(result.errors[0]).toContain("Invalid metadata IDs for liveboard-level custom actions: invalidId. Supported metadata IDs: liveboardIds");
259
+ });
260
+ test('should accept valid metadata IDs for LIVEBOARD', () => {
261
+ const action = {
262
+ id: 'test-id',
263
+ name: 'Test Action',
264
+ target: CustomActionTarget.LIVEBOARD,
265
+ position: CustomActionsPosition.PRIMARY,
266
+ metadataIds: {
267
+ liveboardIds: ['lb-1', 'lb-2'],
268
+ },
269
+ };
270
+ const result = getCustomActions([action]);
271
+ expect(result.actions).toEqual([action]);
272
+ expect(result.errors).toEqual([]);
273
+ });
274
+ });
275
+ describe('Data Model IDs Validation', () => {
276
+ test('should reject invalid data model IDs for VIZ', () => {
277
+ const action = {
278
+ id: 'test-id',
279
+ name: 'Test Action',
280
+ target: CustomActionTarget.VIZ,
281
+ position: CustomActionsPosition.MENU,
282
+ dataModelIds: {
283
+ invalidId: 'some-value',
284
+ },
285
+ };
286
+ const result = getCustomActions([action]);
287
+ expect(result.actions).toEqual([]);
288
+ expect(result.errors).toHaveLength(1);
289
+ expect(result.errors[0]).toContain("Invalid data model IDs for viz-level custom actions: invalidId. Supported data model IDs: modelIds, modelColumnNames");
290
+ });
291
+ test('should accept valid data model IDs for VIZ', () => {
292
+ const action = {
293
+ id: 'test-id',
294
+ name: 'Test Action',
295
+ target: CustomActionTarget.VIZ,
296
+ position: CustomActionsPosition.MENU,
297
+ dataModelIds: {
298
+ modelIds: ['model-1'],
299
+ modelColumnNames: ['col-1'],
300
+ },
301
+ };
302
+ const result = getCustomActions([action]);
303
+ expect(result.actions).toEqual([action]);
304
+ expect(result.errors).toEqual([]);
305
+ });
306
+ });
307
+ describe('Field Validation', () => {
308
+ test('should reject invalid fields for LIVEBOARD', () => {
309
+ const action = {
310
+ id: 'test-id',
311
+ name: 'Test Action',
312
+ target: CustomActionTarget.LIVEBOARD,
313
+ position: CustomActionsPosition.PRIMARY,
314
+ invalidField: 'some-value',
315
+ };
316
+ const result = getCustomActions([action]);
317
+ expect(result.actions).toEqual([]);
318
+ expect(result.errors).toHaveLength(1);
319
+ expect(result.errors[0]).toContain("Invalid fields for liveboard-level custom actions: invalidField. Supported fields: name, id, position, target, metadataIds, orgIds, groupIds");
320
+ });
321
+ test('should accept valid fields for LIVEBOARD', () => {
322
+ const action = {
323
+ id: 'test-id',
324
+ name: 'Test Action',
325
+ target: CustomActionTarget.LIVEBOARD,
326
+ position: CustomActionsPosition.PRIMARY,
327
+ orgIds: ['org-1'],
328
+ groupIds: ['group-1'],
329
+ };
330
+ const result = getCustomActions([action]);
331
+ expect(result.actions).toEqual([action]);
332
+ expect(result.errors).toEqual([]);
333
+ });
334
+ });
335
+ describe('Duplicate ID Handling', () => {
336
+ test('should keep only the first action when duplicate IDs are found and report duplicate errors', () => {
337
+ const action1 = {
338
+ id: 'duplicate-id',
339
+ name: 'First Action',
340
+ target: CustomActionTarget.LIVEBOARD,
341
+ position: CustomActionsPosition.PRIMARY,
342
+ };
343
+ const action2 = {
344
+ id: 'duplicate-id',
345
+ name: 'Second Action',
346
+ target: CustomActionTarget.LIVEBOARD,
347
+ position: CustomActionsPosition.MENU,
348
+ };
349
+ const result = getCustomActions([action1, action2]);
350
+ expect(result.actions).toHaveLength(1);
351
+ expect(result.actions[0]).toEqual(action1);
352
+ expect(result.errors).toHaveLength(1);
353
+ expect(result.errors[0]).toContain("Duplicate custom action ID 'duplicate-id' found");
354
+ expect(result.errors[0]).toContain("Actions with names 'Second Action' will be ignored");
355
+ expect(result.errors[0]).toContain("Keeping 'First Action'");
356
+ });
357
+ });
358
+ describe('Complex Validation Scenarios', () => {
359
+ test('should handle multiple validation errors for a single action', () => {
360
+ const action = {
361
+ id: 'test-id',
362
+ name: 'Test Action',
363
+ target: CustomActionTarget.LIVEBOARD,
364
+ position: CustomActionsPosition.CONTEXTMENU,
365
+ metadataIds: {
366
+ invalidId: 'some-value', // Invalid metadata ID
367
+ },
368
+ invalidField: 'some-value', // Invalid field
369
+ };
370
+ const result = getCustomActions([action]);
371
+ expect(result.actions).toEqual([]);
372
+ expect(result.errors).toHaveLength(3);
373
+ expect(result.errors).toContain("Position 'CONTEXTMENU' is not supported for liveboard-level custom actions. Supported positions: PRIMARY, MENU");
374
+ expect(result.errors).toContain("Invalid metadata IDs for liveboard-level custom actions: invalidId. Supported metadata IDs: liveboardIds");
375
+ expect(result.errors).toContain("Invalid fields for liveboard-level custom actions: invalidField. Supported fields: name, id, position, target, metadataIds, orgIds, groupIds");
376
+ });
377
+ test('should handle mix of valid and invalid actions', () => {
378
+ const validAction = {
379
+ id: 'valid-id',
380
+ name: 'Valid Action',
381
+ target: CustomActionTarget.LIVEBOARD,
382
+ position: CustomActionsPosition.PRIMARY,
383
+ };
384
+ const invalidAction = {
385
+ id: 'invalid-id',
386
+ name: 'Invalid Action',
387
+ target: CustomActionTarget.SPOTTER,
388
+ position: CustomActionsPosition.PRIMARY, // Invalid for SPOTTER
389
+ };
390
+ const result = getCustomActions([validAction, invalidAction]);
391
+ expect(result.actions).toEqual([validAction]);
392
+ expect(result.errors).toHaveLength(1);
393
+ expect(result.errors[0]).toContain("Position 'PRIMARY' is not supported for spotter-level custom actions. Supported positions: MENU, CONTEXTMENU");
394
+ });
395
+ });
396
+ });
397
+ //# sourceMappingURL=custom-actions.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-actions.spec.js","sourceRoot":"","sources":["../../../src/utils/custom-actions.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"processData.d.ts","sourceRoot":"","sources":["../../../src/utils/processData.ts"],"names":[],"mappings":"AAQA,OAAO,EAAiC,UAAU,EAAE,MAAM,UAAU,CAAC;AAoBrE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,OAYlE;AA2CD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,OAmB9D;AAiBD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,GAAG,EACN,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,OAAO,GACrB,GAAG,CAiBL"}
1
+ {"version":3,"file":"processData.d.ts","sourceRoot":"","sources":["../../../src/utils/processData.ts"],"names":[],"mappings":"AAQA,OAAO,EAAiC,UAAU,EAAE,MAAM,UAAU,CAAC;AA4BrE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,OAYlE;AA2CD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,OAmB9D;AAiBD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,GAAG,EACN,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,OAAO,GACrB,GAAG,CAmBL"}