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

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 (259) hide show
  1. package/README.md +2 -4
  2. package/cjs/package.json +3 -3
  3. package/cjs/src/authToken.d.ts +1 -0
  4. package/cjs/src/authToken.d.ts.map +1 -1
  5. package/cjs/src/authToken.js +13 -3
  6. package/cjs/src/authToken.js.map +1 -1
  7. package/cjs/src/authToken.spec.js +29 -0
  8. package/cjs/src/authToken.spec.js.map +1 -1
  9. package/cjs/src/css-variables.d.ts +2 -1
  10. package/cjs/src/css-variables.d.ts.map +1 -1
  11. package/cjs/src/embed/app.d.ts +22 -1
  12. package/cjs/src/embed/app.d.ts.map +1 -1
  13. package/cjs/src/embed/app.js +22 -1
  14. package/cjs/src/embed/app.js.map +1 -1
  15. package/cjs/src/embed/app.spec.js +70 -3
  16. package/cjs/src/embed/app.spec.js.map +1 -1
  17. package/cjs/src/embed/bodyless-conversation.d.ts +0 -1
  18. package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
  19. package/cjs/src/embed/bodyless-conversation.js +3 -7
  20. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  21. package/cjs/src/embed/conversation.d.ts +2 -3
  22. package/cjs/src/embed/conversation.d.ts.map +1 -1
  23. package/cjs/src/embed/conversation.js +2 -7
  24. package/cjs/src/embed/conversation.js.map +1 -1
  25. package/cjs/src/embed/liveboard.d.ts +32 -1
  26. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  27. package/cjs/src/embed/liveboard.js +8 -25
  28. package/cjs/src/embed/liveboard.js.map +1 -1
  29. package/cjs/src/embed/liveboard.spec.js +96 -28
  30. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  31. package/cjs/src/embed/sage.d.ts +0 -1
  32. package/cjs/src/embed/sage.d.ts.map +1 -1
  33. package/cjs/src/embed/sage.js +6 -10
  34. package/cjs/src/embed/sage.js.map +1 -1
  35. package/cjs/src/embed/sage.spec.js +20 -10
  36. package/cjs/src/embed/sage.spec.js.map +1 -1
  37. package/cjs/src/embed/search-bar.d.ts +0 -1
  38. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  39. package/cjs/src/embed/search-bar.js +7 -11
  40. package/cjs/src/embed/search-bar.js.map +1 -1
  41. package/cjs/src/embed/search.d.ts +0 -1
  42. package/cjs/src/embed/search.d.ts.map +1 -1
  43. package/cjs/src/embed/search.js +8 -7
  44. package/cjs/src/embed/search.js.map +1 -1
  45. package/cjs/src/embed/search.spec.js +10 -10
  46. package/cjs/src/embed/search.spec.js.map +1 -1
  47. package/cjs/src/embed/ts-embed.d.ts +5 -7
  48. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  49. package/cjs/src/embed/ts-embed.js +25 -22
  50. package/cjs/src/embed/ts-embed.js.map +1 -1
  51. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
  52. package/cjs/src/embed/ts-embed.spec.js +122 -0
  53. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  54. package/cjs/src/errors.d.ts +11 -0
  55. package/cjs/src/errors.d.ts.map +1 -1
  56. package/cjs/src/errors.js +12 -1
  57. package/cjs/src/errors.js.map +1 -1
  58. package/cjs/src/index.d.ts +2 -2
  59. package/cjs/src/index.d.ts.map +1 -1
  60. package/cjs/src/index.js +3 -1
  61. package/cjs/src/index.js.map +1 -1
  62. package/cjs/src/react/index.d.ts +1 -1
  63. package/cjs/src/react/index.d.ts.map +1 -1
  64. package/cjs/src/react/index.js +4 -2
  65. package/cjs/src/react/index.js.map +1 -1
  66. package/cjs/src/react/index.spec.js +1 -1
  67. package/cjs/src/react/index.spec.js.map +1 -1
  68. package/cjs/src/types.d.ts +163 -21
  69. package/cjs/src/types.d.ts.map +1 -1
  70. package/cjs/src/types.js +65 -22
  71. package/cjs/src/types.js.map +1 -1
  72. package/cjs/src/utils/custom-actions.d.ts +12 -0
  73. package/cjs/src/utils/custom-actions.d.ts.map +1 -0
  74. package/cjs/src/utils/custom-actions.js +180 -0
  75. package/cjs/src/utils/custom-actions.js.map +1 -0
  76. package/cjs/src/utils/custom-actions.spec.d.ts +2 -0
  77. package/cjs/src/utils/custom-actions.spec.d.ts.map +1 -0
  78. package/cjs/src/utils/custom-actions.spec.js +399 -0
  79. package/cjs/src/utils/custom-actions.spec.js.map +1 -0
  80. package/cjs/src/utils/processData.d.ts.map +1 -1
  81. package/cjs/src/utils/processData.js +10 -0
  82. package/cjs/src/utils/processData.js.map +1 -1
  83. package/cjs/src/utils/processData.spec.js +11 -0
  84. package/cjs/src/utils/processData.spec.js.map +1 -1
  85. package/cjs/src/utils.d.ts +21 -0
  86. package/cjs/src/utils.d.ts.map +1 -1
  87. package/cjs/src/utils.js +32 -1
  88. package/cjs/src/utils.js.map +1 -1
  89. package/cjs/src/utils.spec.js +38 -0
  90. package/cjs/src/utils.spec.js.map +1 -1
  91. package/dist/{index-CmEQfuE3.js → index-DQueHwfQ.js} +1 -1
  92. package/dist/src/authToken.d.ts +1 -0
  93. package/dist/src/authToken.d.ts.map +1 -1
  94. package/dist/src/css-variables.d.ts +2 -1
  95. package/dist/src/css-variables.d.ts.map +1 -1
  96. package/dist/src/embed/app.d.ts +22 -1
  97. package/dist/src/embed/app.d.ts.map +1 -1
  98. package/dist/src/embed/bodyless-conversation.d.ts +0 -1
  99. package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
  100. package/dist/src/embed/conversation.d.ts +2 -3
  101. package/dist/src/embed/conversation.d.ts.map +1 -1
  102. package/dist/src/embed/liveboard.d.ts +32 -1
  103. package/dist/src/embed/liveboard.d.ts.map +1 -1
  104. package/dist/src/embed/sage.d.ts +0 -1
  105. package/dist/src/embed/sage.d.ts.map +1 -1
  106. package/dist/src/embed/search-bar.d.ts +0 -1
  107. package/dist/src/embed/search-bar.d.ts.map +1 -1
  108. package/dist/src/embed/search.d.ts +0 -1
  109. package/dist/src/embed/search.d.ts.map +1 -1
  110. package/dist/src/embed/ts-embed.d.ts +5 -7
  111. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  112. package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
  113. package/dist/src/errors.d.ts +11 -0
  114. package/dist/src/errors.d.ts.map +1 -1
  115. package/dist/src/index.d.ts +2 -2
  116. package/dist/src/index.d.ts.map +1 -1
  117. package/dist/src/react/index.d.ts +1 -1
  118. package/dist/src/react/index.d.ts.map +1 -1
  119. package/dist/src/types.d.ts +163 -21
  120. package/dist/src/types.d.ts.map +1 -1
  121. package/dist/src/utils/custom-actions.d.ts +12 -0
  122. package/dist/src/utils/custom-actions.d.ts.map +1 -0
  123. package/dist/src/utils/custom-actions.spec.d.ts +2 -0
  124. package/dist/src/utils/custom-actions.spec.d.ts.map +1 -0
  125. package/dist/src/utils/processData.d.ts.map +1 -1
  126. package/dist/src/utils.d.ts +21 -0
  127. package/dist/src/utils.d.ts.map +1 -1
  128. package/dist/tsembed-react.es.js +1773 -251
  129. package/dist/tsembed-react.js +1772 -250
  130. package/dist/tsembed.es.js +1771 -250
  131. package/dist/tsembed.js +1770 -249
  132. package/dist/visual-embed-sdk-react-full.d.ts +228 -39
  133. package/dist/visual-embed-sdk-react.d.ts +228 -39
  134. package/dist/visual-embed-sdk.d.ts +228 -39
  135. package/lib/package.json +3 -3
  136. package/lib/src/authToken.d.ts +1 -0
  137. package/lib/src/authToken.d.ts.map +1 -1
  138. package/lib/src/authToken.js +11 -2
  139. package/lib/src/authToken.js.map +1 -1
  140. package/lib/src/authToken.spec.js +30 -1
  141. package/lib/src/authToken.spec.js.map +1 -1
  142. package/lib/src/css-variables.d.ts +2 -1
  143. package/lib/src/css-variables.d.ts.map +1 -1
  144. package/lib/src/embed/app.d.ts +22 -1
  145. package/lib/src/embed/app.d.ts.map +1 -1
  146. package/lib/src/embed/app.js +22 -1
  147. package/lib/src/embed/app.js.map +1 -1
  148. package/lib/src/embed/app.spec.js +70 -3
  149. package/lib/src/embed/app.spec.js.map +1 -1
  150. package/lib/src/embed/bodyless-conversation.d.ts +0 -1
  151. package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
  152. package/lib/src/embed/bodyless-conversation.js +3 -7
  153. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  154. package/lib/src/embed/conversation.d.ts +2 -3
  155. package/lib/src/embed/conversation.d.ts.map +1 -1
  156. package/lib/src/embed/conversation.js +2 -7
  157. package/lib/src/embed/conversation.js.map +1 -1
  158. package/lib/src/embed/liveboard.d.ts +32 -1
  159. package/lib/src/embed/liveboard.d.ts.map +1 -1
  160. package/lib/src/embed/liveboard.js +8 -25
  161. package/lib/src/embed/liveboard.js.map +1 -1
  162. package/lib/src/embed/liveboard.spec.js +96 -28
  163. package/lib/src/embed/liveboard.spec.js.map +1 -1
  164. package/lib/src/embed/sage.d.ts +0 -1
  165. package/lib/src/embed/sage.d.ts.map +1 -1
  166. package/lib/src/embed/sage.js +6 -10
  167. package/lib/src/embed/sage.js.map +1 -1
  168. package/lib/src/embed/sage.spec.js +20 -10
  169. package/lib/src/embed/sage.spec.js.map +1 -1
  170. package/lib/src/embed/search-bar.d.ts +0 -1
  171. package/lib/src/embed/search-bar.d.ts.map +1 -1
  172. package/lib/src/embed/search-bar.js +7 -11
  173. package/lib/src/embed/search-bar.js.map +1 -1
  174. package/lib/src/embed/search.d.ts +0 -1
  175. package/lib/src/embed/search.d.ts.map +1 -1
  176. package/lib/src/embed/search.js +8 -7
  177. package/lib/src/embed/search.js.map +1 -1
  178. package/lib/src/embed/search.spec.js +11 -11
  179. package/lib/src/embed/search.spec.js.map +1 -1
  180. package/lib/src/embed/ts-embed.d.ts +5 -7
  181. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  182. package/lib/src/embed/ts-embed.js +25 -22
  183. package/lib/src/embed/ts-embed.js.map +1 -1
  184. package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
  185. package/lib/src/embed/ts-embed.spec.js +123 -1
  186. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  187. package/lib/src/errors.d.ts +11 -0
  188. package/lib/src/errors.d.ts.map +1 -1
  189. package/lib/src/errors.js +11 -0
  190. package/lib/src/errors.js.map +1 -1
  191. package/lib/src/index.d.ts +2 -2
  192. package/lib/src/index.d.ts.map +1 -1
  193. package/lib/src/index.js +2 -2
  194. package/lib/src/index.js.map +1 -1
  195. package/lib/src/react/index.d.ts +1 -1
  196. package/lib/src/react/index.d.ts.map +1 -1
  197. package/lib/src/react/index.js +3 -2
  198. package/lib/src/react/index.js.map +1 -1
  199. package/lib/src/react/index.spec.js +1 -1
  200. package/lib/src/react/index.spec.js.map +1 -1
  201. package/lib/src/types.d.ts +163 -21
  202. package/lib/src/types.d.ts.map +1 -1
  203. package/lib/src/types.js +64 -21
  204. package/lib/src/types.js.map +1 -1
  205. package/lib/src/utils/custom-actions.d.ts +12 -0
  206. package/lib/src/utils/custom-actions.d.ts.map +1 -0
  207. package/lib/src/utils/custom-actions.js +175 -0
  208. package/lib/src/utils/custom-actions.js.map +1 -0
  209. package/lib/src/utils/custom-actions.spec.d.ts +2 -0
  210. package/lib/src/utils/custom-actions.spec.d.ts.map +1 -0
  211. package/lib/src/utils/custom-actions.spec.js +397 -0
  212. package/lib/src/utils/custom-actions.spec.js.map +1 -0
  213. package/lib/src/utils/processData.d.ts.map +1 -1
  214. package/lib/src/utils/processData.js +10 -0
  215. package/lib/src/utils/processData.js.map +1 -1
  216. package/lib/src/utils/processData.spec.js +11 -0
  217. package/lib/src/utils/processData.spec.js.map +1 -1
  218. package/lib/src/utils.d.ts +21 -0
  219. package/lib/src/utils.d.ts.map +1 -1
  220. package/lib/src/utils.js +29 -0
  221. package/lib/src/utils.js.map +1 -1
  222. package/lib/src/utils.spec.js +39 -1
  223. package/lib/src/utils.spec.js.map +1 -1
  224. package/lib/src/visual-embed-sdk.d.ts +229 -40
  225. package/package.json +3 -3
  226. package/src/authToken.spec.ts +48 -1
  227. package/src/authToken.ts +13 -2
  228. package/src/css-variables.ts +2 -1
  229. package/src/embed/app.spec.ts +99 -3
  230. package/src/embed/app.ts +44 -1
  231. package/src/embed/bodyless-conversation.ts +3 -8
  232. package/src/embed/conversation.ts +4 -19
  233. package/src/embed/liveboard.spec.ts +128 -30
  234. package/src/embed/liveboard.ts +66 -52
  235. package/src/embed/sage.spec.ts +24 -10
  236. package/src/embed/sage.ts +7 -12
  237. package/src/embed/search-bar.tsx +7 -14
  238. package/src/embed/search.spec.ts +13 -14
  239. package/src/embed/search.ts +8 -19
  240. package/src/embed/ts-embed.spec.ts +136 -2
  241. package/src/embed/ts-embed.ts +31 -28
  242. package/src/errors.ts +12 -0
  243. package/src/index.ts +4 -0
  244. package/src/react/index.spec.tsx +1 -1
  245. package/src/react/index.tsx +5 -2
  246. package/src/types.ts +225 -79
  247. package/src/utils/custom-actions.spec.ts +431 -0
  248. package/src/utils/custom-actions.ts +217 -0
  249. package/src/utils/processData.spec.ts +12 -0
  250. package/src/utils/processData.ts +10 -0
  251. package/src/utils.spec.ts +52 -0
  252. package/src/utils.ts +31 -0
  253. package/dist/index-BDlM0f0T.js +0 -7371
  254. package/dist/index-D1pyb7RG.js +0 -7371
  255. package/dist/index-DeFzsyFF.js +0 -7371
  256. package/dist/index-Dpf0rd6w.js +0 -7371
  257. package/dist/index-UuEbsISo.js +0 -7447
  258. package/dist/index-e3Uw3YFO.js +0 -7371
  259. package/dist/index-k7pkZMhx.js +0 -7371
@@ -12,7 +12,7 @@ import EventEmitter from 'eventemitter3';
12
12
  * @summary ThoughtSpot Visual Embed SDK
13
13
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
14
14
  */
15
- export { init, logout, prefetch, executeTML, exportTML, executeTMLInput, exportTMLInput, getEmbedConfig as getInitConfig, getSessionInfo, tokenizedFetch, getAnswerFromQuery, createLiveboardWithAnswers, SearchEmbed, SearchBarEmbed, PinboardEmbed, LiveboardEmbed, SageEmbed, AppEmbed, SpotterAgentEmbed, SpotterAgentEmbedViewConfig, BodylessConversationViewConfig, BodylessConversation, SpotterEmbed, SpotterEmbedViewConfig, ConversationViewConfig, ConversationEmbed, AuthFailureType, AuthStatus, AuthEvent, AuthEventEmitter, AnswerService, SessionInterface, UnderlyingDataPoint, Page, AuthType, RuntimeFilter, RuntimeFilterOp, EmbedEvent, HostEvent, DataSourceVisualMode, Action, ContextMenuTriggerOptions, EmbedConfig, SearchViewConfig, SearchBarViewConfig, LiveboardViewConfig, SageViewConfig, AppViewConfig, PrefetchFeatures, FrameParams, HomeLeftNavItem, HomepageModule, DOMSelector, MessageOptions, MessageCallback, MessagePayload, CustomisationsInterface, CustomStyles, customCssInterface, CustomCssVariables, RuntimeParameter, LogLevel, uploadMixpanelEvent, MIXPANEL_EVENT, HomePageSearchBarMode, PrimaryNavbarVersion, HomePage, ListPage, VizPoint, CustomActionPayload, UIPassthroughEvent, ListPageColumns, DataPanelCustomColumnGroupsAccordionState, };
15
+ export { init, logout, prefetch, executeTML, exportTML, executeTMLInput, exportTMLInput, getEmbedConfig as getInitConfig, getSessionInfo, tokenizedFetch, getAnswerFromQuery, createLiveboardWithAnswers, SearchEmbed, SearchBarEmbed, PinboardEmbed, LiveboardEmbed, SageEmbed, AppEmbed, SpotterAgentEmbed, SpotterAgentEmbedViewConfig, BodylessConversationViewConfig, BodylessConversation, SpotterEmbed, SpotterEmbedViewConfig, ConversationViewConfig, ConversationEmbed, AuthFailureType, AuthStatus, AuthEvent, AuthEventEmitter, AnswerService, SessionInterface, UnderlyingDataPoint, Page, AuthType, RuntimeFilter, RuntimeFilterOp, EmbedEvent, HostEvent, DataSourceVisualMode, Action, ContextMenuTriggerOptions, EmbedConfig, SearchViewConfig, SearchBarViewConfig, LiveboardViewConfig, SageViewConfig, AppViewConfig, PrefetchFeatures, FrameParams, HomeLeftNavItem, HomepageModule, DOMSelector, MessageOptions, MessageCallback, MessagePayload, CustomisationsInterface, CustomStyles, customCssInterface, CustomCssVariables, RuntimeParameter, LogLevel, uploadMixpanelEvent, MIXPANEL_EVENT, HomePageSearchBarMode, PrimaryNavbarVersion, HomePage, ListPage, VizPoint, CustomActionPayload, UIPassthroughEvent, ListPageColumns, DataPanelCustomColumnGroupsAccordionState, CustomActionsPosition, CustomActionTarget, };
16
16
 
17
17
  /**
18
18
  * Copyright (c) 2022
@@ -104,7 +104,12 @@ export enum HomePage {
104
104
  * Modular (v2) introduces the updated Modular Home Experience.
105
105
  * It serves as the foundational version of the home page.
106
106
  */
107
- Modular = "v2"
107
+ Modular = "v2",
108
+ /**
109
+ * ModularWithStylingChanges (v3) introduces Modular Home Experience
110
+ * with styling changes.
111
+ */
112
+ ModularWithStylingChanges = "v3"
108
113
  }
109
114
  /**
110
115
  * Define the version of the list page
@@ -525,6 +530,22 @@ export interface AppViewConfig extends AllEmbedViewConfig {
525
530
  * ```
526
531
  */
527
532
  isLiveboardStylingAndGroupingEnabled?: boolean;
533
+ /**
534
+ * This flag is used to enable/disable the png embedding of liveboard in scheduled mails
535
+ *
536
+ * Supported embed types: `AppEmbed`, `LiveboardEmbed`
537
+ * @type {boolean}
538
+ * @version SDK: 1.42.0 | ThoughtSpot: 10.14.0.cl
539
+ * @example
540
+ * ```js
541
+ * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
542
+ * const embed = new <EmbedComponent>('#tsEmbed', {
543
+ * ... // other embed view config
544
+ * isPNGInScheduledEmailsEnabled: true,
545
+ * })
546
+ * ```
547
+ */
548
+ isPNGInScheduledEmailsEnabled?: boolean;
528
549
  /**
529
550
  * This flag is used to enable the full height lazy load data.
530
551
  *
@@ -1057,6 +1078,22 @@ export interface LiveboardViewConfig extends BaseViewConfig, LiveboardOtherViewC
1057
1078
  * ```
1058
1079
  */
1059
1080
  isLiveboardStylingAndGroupingEnabled?: boolean;
1081
+ /**
1082
+ * This flag is used to enable/disable the png embedding of liveboard in scheduled mails
1083
+ *
1084
+ * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1085
+ * @type {boolean}
1086
+ * @version SDK: 1.42.0 | ThoughtSpot: 10.14.0.cl
1087
+ * @example
1088
+ * ```js
1089
+ * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
1090
+ * const embed = new <EmbedComponent>('#tsEmbed', {
1091
+ * ... // other embed view config
1092
+ * isPNGInScheduledEmailsEnabled: true,
1093
+ * })
1094
+ * ```
1095
+ */
1096
+ isPNGInScheduledEmailsEnabled?: boolean;
1060
1097
  /**
1061
1098
  * This flag is used to enable the full height lazy load data.
1062
1099
  *
@@ -1097,6 +1134,22 @@ export interface LiveboardViewConfig extends BaseViewConfig, LiveboardOtherViewC
1097
1134
  * @version SDK: 1.40.0 | ThoughtSpot:10.12.0.cl
1098
1135
  */
1099
1136
  lazyLoadingMargin?: string;
1137
+ /**
1138
+ * showSpotterLimitations : show limitation text
1139
+ * of the spotter underneath the chat input.
1140
+ * default is false.
1141
+ *
1142
+ * @example
1143
+ * ```js
1144
+ * const embed = new LiveboardEmbed('#embed-container', {
1145
+ * // ...other options
1146
+ * showSpotterLimitations: true,
1147
+ * })
1148
+ * ```
1149
+ * @type {boolean}
1150
+ * @version SDK: 1.41.1 | ThoughtSpot: 10.5.0.cl
1151
+ */
1152
+ showSpotterLimitations?: boolean;
1100
1153
  }
1101
1154
  /**
1102
1155
  * Embed a ThoughtSpot Liveboard or visualization. When rendered it already
@@ -1121,7 +1174,6 @@ export class LiveboardEmbed extends V1Embed {
1121
1174
  * embedded Liveboard or visualization.
1122
1175
  */
1123
1176
  protected getEmbedParams(): string;
1124
- protected getEmbedParamsObject(): any;
1125
1177
  /**
1126
1178
  * @hidden
1127
1179
  * Internal state to track the current liveboard id.
@@ -1484,7 +1536,6 @@ export class SearchEmbed extends TsEmbed {
1484
1536
  };
1485
1537
  };
1486
1538
  protected getAppInitData(): Promise<SearchAppInitData>;
1487
- protected getEmbedParamsObject(): Record<any, any>;
1488
1539
  protected getEmbedParams(): string;
1489
1540
  /**
1490
1541
  * Construct the URL of the embedded ThoughtSpot search to be
@@ -1606,7 +1657,6 @@ export class SearchBarEmbed extends TsEmbed {
1606
1657
  protected viewConfig: SearchBarViewConfig;
1607
1658
  protected embedComponentType: string;
1608
1659
  constructor(domSelector: string, viewConfig: SearchBarViewConfig);
1609
- protected getEmbedParamsObject(): Record<any, any>;
1610
1660
  /**
1611
1661
  * Render the embedded ThoughtSpot search
1612
1662
  */
@@ -1646,7 +1696,6 @@ export interface SpotterAgentMessageViewConfig extends SpotterAgentEmbedViewConf
1646
1696
  export class ConversationMessage extends TsEmbed {
1647
1697
  protected viewConfig: SpotterAgentMessageViewConfig;
1648
1698
  constructor(container: HTMLElement, viewConfig: SpotterAgentMessageViewConfig);
1649
- protected getEmbedParamsObject(): Record<any, any>;
1650
1699
  getIframeSrc(): string;
1651
1700
  render(): Promise<ConversationMessage>;
1652
1701
  }
@@ -1780,8 +1829,8 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
1780
1829
  * Flag to control Data panel experience
1781
1830
  *
1782
1831
  * Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
1783
- * @default false
1784
- * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.4.0.cl
1832
+ * @default true
1833
+ * @version SDK: 1.43.0 | ThoughtSpot Cloud: 10.14.0.cl
1785
1834
  * @example
1786
1835
  * ```js
1787
1836
  * // Replace <EmbedComponent> with embed component name. For example, SageEmbed, AppEmbed, or SearchBarEmbed
@@ -1910,7 +1959,6 @@ export interface ConversationViewConfig extends SpotterEmbedViewConfig {
1910
1959
  export class SpotterEmbed extends TsEmbed {
1911
1960
  protected viewConfig: SpotterEmbedViewConfig;
1912
1961
  constructor(container: HTMLElement, viewConfig: SpotterEmbedViewConfig);
1913
- protected getEmbedParamsObject(): Record<any, any>;
1914
1962
  getIframeSrc(): string;
1915
1963
  render(): Promise<SpotterEmbed>;
1916
1964
  }
@@ -2858,6 +2906,31 @@ export interface EmbedConfig {
2858
2906
  * ```
2859
2907
  */
2860
2908
  disableFullscreenPresentation?: boolean;
2909
+ /**
2910
+ * Custom Actions allows users to define interactive UI actions (like buttons or menu
2911
+ * items) that appear in ThoughtSpot's visualizations, answers, and Liveboards. These
2912
+ * actions enable users to trigger custom workflows — such as navigating to an
2913
+ * external app, calling an API, or opening a modal — based on the data context of
2914
+ * what they clicked can be used to trigger custom logic when the action is clicked.
2915
+ * @version SDK: 1.43.0 | ThoughtSpot: 10.14.0.cl
2916
+ * @example
2917
+ * ```js
2918
+ * import { CustomActionPosition, CustomActionTarget } from '@thoughtspot/visual-embed-sdk';
2919
+ * init({
2920
+ * ... // other embed config options
2921
+ * customActions: [
2922
+ * {
2923
+ * name: 'customAction',
2924
+ * id: 'customAction',
2925
+ * target: CustomActionTarget.VISUALIZATION,
2926
+ * position: CustomActionPosition.PRIMARY,
2927
+ * }
2928
+ * }
2929
+ * ]
2930
+ * })
2931
+ * ```
2932
+ */
2933
+ customActions?: CustomAction[];
2861
2934
  }
2862
2935
  export interface LayoutConfig {
2863
2936
  }
@@ -3218,6 +3291,34 @@ export interface BaseViewConfig {
3218
3291
  * ```
3219
3292
  */
3220
3293
  showAlerts?: boolean;
3294
+ /**
3295
+ * Custom Actions allows users to define interactive UI actions (like buttons or menu
3296
+ * items) that appear in ThoughtSpot's visualizations, answers, and Liveboards. These
3297
+ * actions enable users to trigger custom workflows — such as navigating to an
3298
+ * external app, calling an API, or opening a modal — based on the data context of
3299
+ * what they clicked can be used to trigger custom logic when the action is clicked.
3300
+ *
3301
+ * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterEmbed`
3302
+ * @version SDK: 1.43.0 | ThoughtSpot: 10.14.0.cl
3303
+ * @example
3304
+ * ```js
3305
+ * import { CustomActionPosition, CustomActionTarget } from '@thoughtspot/visual-embed-sdk';
3306
+ * // Use supported embed types such as AppEmbed or LiveboardEmbed
3307
+ * const embed = new LiveboardEmbed('#tsEmbed', {
3308
+ * ... // other embed config options
3309
+ * customActions: [
3310
+ * {
3311
+ * name: 'customAction',
3312
+ * id: 'customAction',
3313
+ * target: CustomActionTarget.VISUALIZATION,
3314
+ * position: CustomActionPosition.PRIMARY,
3315
+ * }
3316
+ * }
3317
+ * ]
3318
+ * })
3319
+ * ```
3320
+ */
3321
+ customActions?: CustomAction[];
3221
3322
  }
3222
3323
  /**
3223
3324
  * The configuration object for Home page embeds configs.
@@ -3227,7 +3328,8 @@ export interface HomePageConfig {
3227
3328
  * Hide list page columns
3228
3329
  * For example: hiddenListColumns = [ListPageColumns.Author]
3229
3330
  *
3230
- * **Note**: This option is available only in full app embedding. To use it, you need to import `ListPageColumns` enum.
3331
+ * **Note**: This option is currently available only in full app embedding and requires importing the ListPageColumns enum.
3332
+ * At present, it can be used with Liveboard and Answer list pages, and starting with version 10.14.0.cl, it will also be supported for the Home page.
3231
3333
  *
3232
3334
  * Supported embed types: `AppEmbed`
3233
3335
  * @version SDK: 1.38.0 | ThoughtSpot: 10.9.0.cl
@@ -3412,8 +3514,8 @@ export interface SearchLiveboardCommonViewConfig {
3412
3514
  * Flag to control Data panel experience
3413
3515
  *
3414
3516
  * Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
3415
- * @default false
3416
- * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl
3517
+ * @default true
3518
+ * @version SDK: 1.43.0 | ThoughtSpot Cloud: 10.14.0.cl
3417
3519
  * @example
3418
3520
  * ```js
3419
3521
  * // Replace <EmbedComponent> with embed component name. For example, SageEmbed, AppEmbed, or SearchBarEmbed
@@ -3543,7 +3645,8 @@ export interface LiveboardAppEmbedViewConfig {
3543
3645
  */
3544
3646
  isLiveboardCompactHeaderEnabled?: boolean;
3545
3647
  /**
3546
- * This flag can be used to show or hide the Liveboard verified icon in the compact header.
3648
+ * This flag can be used to show or hide the Liveboard verified icon in the compact
3649
+ * header.
3547
3650
  *
3548
3651
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
3549
3652
  * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl
@@ -3561,6 +3664,8 @@ export interface LiveboardAppEmbedViewConfig {
3561
3664
  /**
3562
3665
  * This flag is used to enable/disable hide irrelevant filters in Liveboard tab
3563
3666
  *
3667
+ * **Note**: This feature is supported only if compact header is enabled on your Liveboard. To enable compact header, use the `isLiveboardCompactHeaderEnabled` attribute.
3668
+ *
3564
3669
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
3565
3670
  * @version SDK: 1.36.0 | ThoughtSpot:10.6.0.cl
3566
3671
  * @default false
@@ -3570,12 +3675,14 @@ export interface LiveboardAppEmbedViewConfig {
3570
3675
  * const embed = new <EmbedComponent>('#tsEmbed', {
3571
3676
  * ... // other embed view config
3572
3677
  * hideIrrelevantChipsInLiveboardTabs: true,
3678
+ * isLiveboardCompactHeaderEnabled: true,
3573
3679
  * })
3574
3680
  * ```
3575
3681
  */
3576
3682
  hideIrrelevantChipsInLiveboardTabs?: boolean;
3577
3683
  /**
3578
- * This flag can be used to show or hide the re-verify banner on the Liveboard compact header
3684
+ * This flag can be used to show or hide the re-verify banner on the Liveboard
3685
+ * compact header
3579
3686
  *
3580
3687
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
3581
3688
  * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl
@@ -3622,6 +3729,21 @@ export interface LiveboardAppEmbedViewConfig {
3622
3729
  * ```
3623
3730
  */
3624
3731
  coverAndFilterOptionInPDF?: boolean;
3732
+ /**
3733
+ * This flag is used to enable or disable the XLSX/CSV download option for Liveboards.
3734
+ *
3735
+ * Supported embed types: `AppEmbed`, `LiveboardEmbed`
3736
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.14.0.cl
3737
+ * @example
3738
+ * ```js
3739
+ * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
3740
+ * const embed = new <EmbedComponent>('#tsEmbed', {
3741
+ * ... // other embed view config
3742
+ * liveboardXLSXCSVDownload: true,
3743
+ * })
3744
+ * ```
3745
+ */
3746
+ liveboardXLSXCSVDownload?: boolean;
3625
3747
  }
3626
3748
  export interface AllEmbedViewConfig extends BaseViewConfig, SearchLiveboardCommonViewConfig, HomePageConfig, LiveboardAppEmbedViewConfig {
3627
3749
  }
@@ -4509,6 +4631,11 @@ export enum EmbedEvent {
4509
4631
  * @hidden
4510
4632
  */
4511
4633
  APP_INIT = "appInit",
4634
+ /**
4635
+ * Internal event to clear the cached info
4636
+ * @hidden
4637
+ */
4638
+ CLEAR_INFO_CACHE = "clearInfoCache",
4512
4639
  /**
4513
4640
  * Emitted when a user clicks **Show Liveboard details** on a Liveboard
4514
4641
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
@@ -4976,7 +5103,18 @@ export enum EmbedEvent {
4976
5103
  * })
4977
5104
  * ```
4978
5105
  */
4979
- EmbedListenerReady = "EmbedListenerReady"
5106
+ EmbedListenerReady = "EmbedListenerReady",
5107
+ /**
5108
+ * Emitted when the organization is switched.
5109
+ * @example
5110
+ * ```js
5111
+ * appEmbed.on(EmbedEvent.OrgSwitched, (payload) => {
5112
+ * console.log('payload', payload);
5113
+ * })
5114
+ * ```
5115
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
5116
+ */
5117
+ OrgSwitched = "orgSwitched"
4980
5118
  }
4981
5119
  /**
4982
5120
  * Event types that can be triggered by the host application
@@ -5893,7 +6031,7 @@ export enum HostEvent {
5893
6031
  * column: "Date",
5894
6032
  * oper: 'EQ',
5895
6033
  * values: ["2023-07-31"],
5896
- * types: "EXACT_DATE"
6034
+ * type: "EXACT_DATE"
5897
6035
  * }]
5898
6036
  * });
5899
6037
  * ```
@@ -6238,17 +6376,7 @@ export enum HostEvent {
6238
6376
  * ```
6239
6377
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
6240
6378
  */
6241
- AskSpotter = "AskSpotter",
6242
- /**
6243
- * @hidden
6244
- * Triggers the update of the embed params.
6245
- *
6246
- * @example
6247
- * ```js
6248
- * liveboardEmbed.trigger(HostEvent.UpdateEmbedParams, viewConfig);
6249
- * ```
6250
- */
6251
- UpdateEmbedParams = "updateEmbedParams"
6379
+ AskSpotter = "AskSpotter"
6252
6380
  }
6253
6381
  /**
6254
6382
  * The different visual modes that the data sources panel within
@@ -6344,6 +6472,7 @@ export enum Param {
6344
6472
  Query = "query",
6345
6473
  HideHomepageLeftNav = "hideHomepageLeftNav",
6346
6474
  ModularHomeExperienceEnabled = "modularHomeExperience",
6475
+ HomepageVersion = "homepageVersion",
6347
6476
  ListPageVersion = "listpageVersion",
6348
6477
  PendoTrackingKey = "additionalPendoKey",
6349
6478
  LiveboardHeaderSticky = "isLiveboardHeaderSticky",
@@ -6384,7 +6513,9 @@ export enum Param {
6384
6513
  isSpotterAgentEmbed = "isSpotterAgentEmbed",
6385
6514
  IsLiveboardStylingAndGroupingEnabled = "isLiveboardStylingAndGroupingEnabled",
6386
6515
  IsLazyLoadingForEmbedEnabled = "isLazyLoadingForEmbedEnabled",
6387
- RootMarginForLazyLoad = "rootMarginForLazyLoad"
6516
+ RootMarginForLazyLoad = "rootMarginForLazyLoad",
6517
+ LiveboardXLSXCSVDownload = "isLiveboardXLSXCSVDownloadEnabled",
6518
+ isPNGInScheduledEmailsEnabled = "isPNGInScheduledEmailsEnabled"
6388
6519
  }
6389
6520
  /**
6390
6521
  * ThoughtSpot application pages include actions and menu commands
@@ -6956,7 +7087,7 @@ export enum Action {
6956
7087
  * The Favorites icon (*) for Answers,
6957
7088
  * Liveboard, and data objects like Worksheet, Model,
6958
7089
  * Tables and Views.
6959
- * Allows adding an object to the users favorites list.
7090
+ * Allows adding an object to the user's favorites list.
6960
7091
  * @example
6961
7092
  * ```js
6962
7093
  * disabledActions: [Action.AddToFavorites]
@@ -7664,7 +7795,30 @@ export enum Action {
7664
7795
  * ```
7665
7796
  * @version SDK: 1.41.0 | ThoughtSpot Cloud: 10.13.0.cl
7666
7797
  */
7667
- SpotterTokenQuickEdit = "SpotterTokenQuickEdit"
7798
+ SpotterTokenQuickEdit = "SpotterTokenQuickEdit",
7799
+ /**
7800
+ * The **PNG screenshot in email** option in the schedule email dialog.
7801
+ * Includes a PNG screenshot in the notification email body.
7802
+ * @example
7803
+ * ```js
7804
+ * disabledActions: [Action.PngScreenshotInEmail]
7805
+ * ```
7806
+ * ```
7807
+ * @version SDK: 1.42.0 | ThoughtSpot Cloud: 10.14.0.cl
7808
+ */
7809
+ PngScreenshotInEmail = "pngScreenshotInEmail",
7810
+ /**
7811
+ * The **Remove attachment** action in the schedule email dialog.
7812
+ * Removes an attachment from the email configuration.
7813
+ * @example
7814
+ * ```js
7815
+ * disabledActions: [Action.RemoveAttachment]
7816
+ * ```
7817
+ * ```
7818
+ * ```
7819
+ * @version SDK: 1.42.0 | ThoughtSpot Cloud: 10.14.0.cl
7820
+ */
7821
+ RemoveAttachment = "removeAttachment"
7668
7822
  }
7669
7823
  export interface AnswerServiceType {
7670
7824
  getAnswer?: (offset: number, batchSize: number) => any;
@@ -7725,6 +7879,41 @@ export interface CustomActionPayload {
7725
7879
  session: SessionInterface;
7726
7880
  vizId?: string;
7727
7881
  }
7882
+ export interface CustomAction {
7883
+ name: string;
7884
+ id: string;
7885
+ position: CustomActionsPosition;
7886
+ target: CustomActionTarget;
7887
+ metadataIds?: {
7888
+ answerIds?: string[];
7889
+ liveboardIds?: string[];
7890
+ vizIds?: string[];
7891
+ };
7892
+ dataModelIds?: {
7893
+ modelIds?: string[];
7894
+ modelColumnNames?: string[];
7895
+ };
7896
+ orgIds?: string[];
7897
+ groupIds?: string[];
7898
+ }
7899
+ /**
7900
+ * Enum options to show custom actions at different
7901
+ * positions in the application.
7902
+ */
7903
+ export enum CustomActionsPosition {
7904
+ PRIMARY = "PRIMARY",
7905
+ MENU = "MENU",
7906
+ CONTEXTMENU = "CONTEXTMENU"
7907
+ }
7908
+ /**
7909
+ * Enum options to mention the target of the custom action.
7910
+ */
7911
+ export enum CustomActionTarget {
7912
+ LIVEBOARD = "LIVEBOARD",
7913
+ VIZ = "VIZ",
7914
+ ANSWER = "ANSWER",
7915
+ SPOTTER = "SPOTTER"
7916
+ }
7728
7917
  /**
7729
7918
  * Enum options to show or suppress Visual Embed SDK and
7730
7919
  * ThoughtSpot application logs in the console output.
@@ -7819,6 +8008,7 @@ export interface DefaultAppInitData {
7819
8008
  hiddenHomeLeftNavItems: string[];
7820
8009
  customVariablesForThirdPartyTools: Record<string, any>;
7821
8010
  hiddenListColumns: ListPageColumns[];
8011
+ customActions: CustomAction[];
7822
8012
  }
7823
8013
 
7824
8014
  /**
@@ -7846,7 +8036,8 @@ export interface CustomCssVariables {
7846
8036
  * Font color of the text on toggle buttons such as
7847
8037
  * **All**, **Answers**, and **Liveboards** on the Home page (Classic experience),
7848
8038
  * the text color of the chart and table tiles on Home page (New modular Homepage
7849
- * experience), and title text on the AI-generated charts and tables.
8039
+ * experience), title text on the AI-generated charts and tables, and object titles on
8040
+ * list pages such as *Liveboards* and *Answers*.
7850
8041
  * The default color code is #2770EF.
7851
8042
  *
7852
8043
  */
@@ -8671,7 +8862,6 @@ export class SageEmbed extends V1Embed {
8671
8862
  */
8672
8863
  protected viewConfig: SageViewConfig;
8673
8864
  constructor(domSelector: DOMSelector, viewConfig: SageViewConfig);
8674
- protected getEmbedParamsObject(): Record<any, any>;
8675
8865
  /**
8676
8866
  * Constructs a map of parameters to be passed on to the
8677
8867
  * embedded Eureka or Sage search page.
@@ -9127,6 +9317,7 @@ export type TriggerResponse<PayloadT, HostEventT extends HostEvent> = PayloadT e
9127
9317
  * @param embedConfig
9128
9318
  */
9129
9319
  export function getAuthenticationToken(embedConfig: EmbedConfig): Promise<string>;
9320
+ export const validateAuthToken: (embedConfig: EmbedConfig, authToken: string, suppressAlert?: boolean) => Promise<boolean>;
9130
9321
  /**
9131
9322
  * Resets the auth token and a new token will be fetched on the next request.
9132
9323
  * @example
@@ -9212,7 +9403,6 @@ export class TsEmbed {
9212
9403
  * @param query
9213
9404
  */
9214
9405
  protected getEmbedBasePath(query: string): string;
9215
- protected getUpdateEmbedParamsObject(): Record<any, any>;
9216
9406
  /**
9217
9407
  * Common query params set for all the embed modes.
9218
9408
  * @param queryParams
@@ -9228,7 +9418,6 @@ export class TsEmbed {
9228
9418
  */
9229
9419
  protected getV1EmbedBasePath(queryString: string): string;
9230
9420
  protected getEmbedParams(): string;
9231
- protected getEmbedParamsObject(): Record<any, any>;
9232
9421
  protected getRootIframeSrc(): string;
9233
9422
  protected createIframeEl(frameSrc: string): HTMLIFrameElement;
9234
9423
  protected handleInsertionIntoDOM(child: string | Node): void;
@@ -9321,10 +9510,10 @@ export class TsEmbed {
9321
9510
  */
9322
9511
  off(messageType: EmbedEvent, callback: MessageCallback): typeof TsEmbed.prototype;
9323
9512
  /**
9324
- * @hidden
9325
- * Internal state to track if the embed container is loaded.
9326
- * This is used to trigger events after the embed container is loaded.
9327
- */
9513
+ * @hidden
9514
+ * Internal state to track if the embed container is loaded.
9515
+ * This is used to trigger events after the embed container is loaded.
9516
+ */
9328
9517
  isEmbedContainerLoaded: boolean;
9329
9518
  protected getPreRenderObj<T extends TsEmbed>(): T;
9330
9519
  /**
@@ -9361,7 +9550,7 @@ export class TsEmbed {
9361
9550
  * Creates the preRender shell
9362
9551
  * @param showPreRenderByDefault - Show the preRender after render, hidden by default
9363
9552
  */
9364
- preRender(showPreRenderByDefault?: boolean): Promise<TsEmbed>;
9553
+ preRender(showPreRenderByDefault?: boolean, replaceExistingPreRender?: boolean): Promise<TsEmbed>;
9365
9554
  /**
9366
9555
  * Get the Post Url Params for THOUGHTSPOT from the current
9367
9556
  * host app URL.
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.41.0-pre-render-1",
3
+ "version": "1.41.1",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -55,7 +55,7 @@
55
55
  "docgen": "typedoc --tsconfig tsconfig.json --theme typedoc-theme --json static/typedoc/typedoc.json --disableOutputCheck",
56
56
  "test-sdk": "jest -c jest.config.sdk.js --runInBand",
57
57
  "test": "npm run test-sdk",
58
- "posttest": "cat ./coverage/sdk/lcov.info | coveralls",
58
+ "posttest": "cat ./coverage/sdk/lcov.info | npx coveralls-next",
59
59
  "is-publish-allowed": "node scripts/is-publish-allowed.js",
60
60
  "prepublishOnly": "npm run is-publish-allowed && npm run test && npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build",
61
61
  "check-size": "npm run build && size-limit",
@@ -101,7 +101,7 @@
101
101
  "babel-jest": "^26.6.3",
102
102
  "babel-preset-gatsby": "^1.10.0",
103
103
  "command-line-args": "^5.1.1",
104
- "coveralls": "^3.1.0",
104
+ "coveralls-next": "^5.0.0",
105
105
  "crypto": "^1.0.1",
106
106
  "current-git-branch": "^1.1.0",
107
107
  "dts-bundle": "^0.7.3",
@@ -4,6 +4,7 @@ import { EmbedConfig } from './types';
4
4
  * @param embedConfig
5
5
  */
6
6
  export declare function getAuthenticationToken(embedConfig: EmbedConfig): Promise<string>;
7
+ export declare const validateAuthToken: (embedConfig: EmbedConfig, authToken: string, suppressAlert?: boolean) => Promise<boolean>;
7
8
  /**
8
9
  * Resets the auth token and a new token will be fetched on the next request.
9
10
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"authToken.d.ts","sourceRoot":"","sources":["../../src/authToken.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAatC;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCtF;AA8BD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAAO,IAEvC,CAAC"}
1
+ {"version":3,"file":"authToken.d.ts","sourceRoot":"","sources":["../../src/authToken.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAatC;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCtF;AAED,eAAO,MAAM,iBAAiB,gBACb,WAAW,aACb,MAAM,kBACD,OAAO,KACxB,QAAQ,OAAO,CAiCjB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAAO,IAEvC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { ERROR_MESSAGE } from './errors';
2
- import { getValueFromWindow, storeValueInWindow } from './utils';
2
+ import { getValueFromWindow, storeValueInWindow, formatTemplate } from './utils';
3
3
  import { fetchAuthTokenService, verifyTokenService } from './utils/authService/authService';
4
4
  import { logger } from './utils/logger';
5
5
  const cacheAuthTokenKey = 'cachedAuthToken';
@@ -47,7 +47,16 @@ export async function getAuthenticationToken(embedConfig) {
47
47
  storeAuthTokenInCache(authToken);
48
48
  return authToken;
49
49
  }
50
- const validateAuthToken = async (embedConfig, authToken, suppressAlert) => {
50
+ export const validateAuthToken = async (embedConfig, authToken, suppressAlert) => {
51
+ // even if token verification is disabled, we will still validate
52
+ // that the token is a string before proceeding.
53
+ if (typeof authToken !== 'string') {
54
+ const errorMessage = formatTemplate(ERROR_MESSAGE.INVALID_TOKEN_TYPE_ERROR, {
55
+ invalidType: typeof authToken,
56
+ });
57
+ logger.error(errorMessage);
58
+ throw new Error(errorMessage);
59
+ }
51
60
  const cachedAuthToken = getCacheAuthToken();
52
61
  if (embedConfig.disableTokenVerification) {
53
62
  logger.info('Token verification is disabled. Assuming token is valid.');
@@ -1 +1 @@
1
- {"version":3,"file":"authToken.js","sourceRoot":"","sources":["../../src/authToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authToken.js","sourceRoot":"","sources":["../../src/authToken.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import { getAuthenticationToken, resetCachedAuthToken } from './authToken';
1
+ import { getAuthenticationToken, resetCachedAuthToken, validateAuthToken } from './authToken';
2
2
  import * as authServiceInstance from './utils/authService/authService';
3
+ import { formatTemplate } from './utils';
4
+ import { logger } from './utils/logger';
5
+ import { ERROR_MESSAGE } from './errors';
3
6
  describe('AuthToken Unit tests', () => {
4
7
  test('getAuthenticationToken: When verification is disabled', async () => {
5
8
  jest.spyOn(authServiceInstance, 'verifyTokenService');
@@ -22,5 +25,31 @@ describe('AuthToken Unit tests', () => {
22
25
  expect(token).toBe('abc2');
23
26
  expect(authServiceInstance.verifyTokenService).toBeCalledWith('test', 'abc2');
24
27
  });
28
+ test('validateAuthToken : When token is invalid by type number', async () => {
29
+ jest.spyOn(logger, 'error').mockImplementation(() => { });
30
+ const loggerSpy = jest.spyOn(logger, 'error');
31
+ const authToken = 123;
32
+ const errorMessage = formatTemplate(ERROR_MESSAGE.INVALID_TOKEN_TYPE_ERROR, {
33
+ invalidType: typeof authToken,
34
+ });
35
+ await expect(validateAuthToken({
36
+ thoughtSpotHost: 'test',
37
+ }, authToken)).rejects.toThrow(errorMessage);
38
+ expect(loggerSpy).toHaveBeenCalledWith(errorMessage);
39
+ loggerSpy.mockRestore();
40
+ });
41
+ test('validateAuthToken : When token is invalid by type object', async () => {
42
+ jest.spyOn(logger, 'error').mockImplementation(() => { });
43
+ const loggerSpy = jest.spyOn(logger, 'error');
44
+ const authToken = {};
45
+ const errorMessage = formatTemplate(ERROR_MESSAGE.INVALID_TOKEN_TYPE_ERROR, {
46
+ invalidType: typeof authToken,
47
+ });
48
+ await expect(validateAuthToken({
49
+ thoughtSpotHost: 'test',
50
+ }, authToken)).rejects.toThrow(errorMessage);
51
+ expect(loggerSpy).toHaveBeenCalledWith(errorMessage);
52
+ loggerSpy.mockRestore();
53
+ });
25
54
  });
26
55
  //# sourceMappingURL=authToken.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authToken.spec.js","sourceRoot":"","sources":["../../src/authToken.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,mBAAmB,MAAM,iCAAiC,CAAC;AAGvE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC;YACvC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM;YAChC,wBAAwB,EAAE,IAAI;SAClB,CAAC,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,oBAAoB,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC;YACvC,eAAe,EAAE,MAAM;YACvB,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM;YAChC,wBAAwB,EAAE,KAAK;SACnB,CAAC,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"authToken.spec.js","sourceRoot":"","sources":["../../src/authToken.spec.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,8 @@ export interface CustomCssVariables {
23
23
  * Font color of the text on toggle buttons such as
24
24
  * **All**, **Answers**, and **Liveboards** on the Home page (Classic experience),
25
25
  * the text color of the chart and table tiles on Home page (New modular Homepage
26
- * experience), and title text on the AI-generated charts and tables.
26
+ * experience), title text on the AI-generated charts and tables, and object titles on
27
+ * list pages such as *Liveboards* and *Answers*.
27
28
  * The default color code is #2770EF.
28
29
  *
29
30
  */