@thoughtspot/visual-embed-sdk 1.31.1 → 1.32.0-alpha.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 (234) hide show
  1. package/cjs/package.json +2 -2
  2. package/cjs/src/auth.d.ts +14 -16
  3. package/cjs/src/auth.d.ts.map +1 -1
  4. package/cjs/src/auth.js +57 -66
  5. package/cjs/src/auth.js.map +1 -1
  6. package/cjs/src/auth.spec.d.ts +12 -0
  7. package/cjs/src/auth.spec.d.ts.map +1 -1
  8. package/cjs/src/auth.spec.js +89 -67
  9. package/cjs/src/auth.spec.js.map +1 -1
  10. package/cjs/src/authToken.d.ts +1 -1
  11. package/cjs/src/authToken.d.ts.map +1 -1
  12. package/cjs/src/authToken.js +10 -4
  13. package/cjs/src/authToken.js.map +1 -1
  14. package/cjs/src/embed/app.spec.js +4 -2
  15. package/cjs/src/embed/app.spec.js.map +1 -1
  16. package/cjs/src/embed/base.d.ts.map +1 -1
  17. package/cjs/src/embed/base.js +2 -0
  18. package/cjs/src/embed/base.js.map +1 -1
  19. package/cjs/src/embed/base.spec.js +1 -0
  20. package/cjs/src/embed/base.spec.js.map +1 -1
  21. package/cjs/src/embed/embed.spec.js +3 -0
  22. package/cjs/src/embed/embed.spec.js.map +1 -1
  23. package/cjs/src/embed/events.spec.js +3 -0
  24. package/cjs/src/embed/events.spec.js.map +1 -1
  25. package/cjs/src/embed/liveboard.spec.js +2 -0
  26. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  27. package/cjs/src/embed/pinboard.spec.js +3 -0
  28. package/cjs/src/embed/pinboard.spec.js.map +1 -1
  29. package/cjs/src/embed/sage.spec.js +3 -0
  30. package/cjs/src/embed/sage.spec.js.map +1 -1
  31. package/cjs/src/embed/search.spec.js +1 -0
  32. package/cjs/src/embed/search.spec.js.map +1 -1
  33. package/cjs/src/embed/ts-embed-trigger.spec.js +3 -0
  34. package/cjs/src/embed/ts-embed-trigger.spec.js.map +1 -1
  35. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  36. package/cjs/src/embed/ts-embed.js +1 -0
  37. package/cjs/src/embed/ts-embed.js.map +1 -1
  38. package/cjs/src/embed/ts-embed.spec.js +7 -0
  39. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  40. package/cjs/src/index.d.ts +2 -1
  41. package/cjs/src/index.d.ts.map +1 -1
  42. package/cjs/src/index.js +2 -1
  43. package/cjs/src/index.js.map +1 -1
  44. package/cjs/src/mixpanel-service.d.ts +2 -1
  45. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  46. package/cjs/src/mixpanel-service.js +1 -0
  47. package/cjs/src/mixpanel-service.js.map +1 -1
  48. package/cjs/src/mixpanel-service.spec.js +7 -0
  49. package/cjs/src/mixpanel-service.spec.js.map +1 -1
  50. package/cjs/src/react/index.d.ts +1 -1
  51. package/cjs/src/react/index.d.ts.map +1 -1
  52. package/cjs/src/react/index.js +2 -1
  53. package/cjs/src/react/index.js.map +1 -1
  54. package/cjs/src/react/index.spec.js +6 -0
  55. package/cjs/src/react/index.spec.js.map +1 -1
  56. package/cjs/src/tokenizedFetch.d.ts +8 -0
  57. package/cjs/src/tokenizedFetch.d.ts.map +1 -1
  58. package/cjs/src/tokenizedFetch.js +8 -0
  59. package/cjs/src/tokenizedFetch.js.map +1 -1
  60. package/cjs/src/types.d.ts +12 -12
  61. package/cjs/src/types.d.ts.map +1 -1
  62. package/cjs/src/types.js +12 -12
  63. package/cjs/src/types.js.map +1 -1
  64. package/cjs/src/utils/authService/authService.d.ts +1 -0
  65. package/cjs/src/utils/authService/authService.d.ts.map +1 -1
  66. package/cjs/src/utils/authService/authService.js +1 -0
  67. package/cjs/src/utils/authService/authService.js.map +1 -1
  68. package/cjs/src/utils/authService/authService.spec.js +18 -5
  69. package/cjs/src/utils/authService/authService.spec.js.map +1 -1
  70. package/cjs/src/utils/authService/tokenizedAuthService.d.ts +15 -2
  71. package/cjs/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
  72. package/cjs/src/utils/authService/tokenizedAuthService.js +39 -9
  73. package/cjs/src/utils/authService/tokenizedAuthService.js.map +1 -1
  74. package/cjs/src/utils/authService/tokenizedAuthService.spec.d.ts +2 -0
  75. package/cjs/src/utils/authService/tokenizedAuthService.spec.d.ts.map +1 -0
  76. package/cjs/src/utils/authService/tokenizedAuthService.spec.js +32 -0
  77. package/cjs/src/utils/authService/tokenizedAuthService.spec.js.map +1 -0
  78. package/cjs/src/utils/processData.js +2 -2
  79. package/cjs/src/utils/processData.js.map +1 -1
  80. package/cjs/src/utils/processData.spec.js +3 -2
  81. package/cjs/src/utils/processData.spec.js.map +1 -1
  82. package/cjs/src/utils/sessionInfoService.d.ts +66 -0
  83. package/cjs/src/utils/sessionInfoService.d.ts.map +1 -0
  84. package/cjs/src/utils/sessionInfoService.js +92 -0
  85. package/cjs/src/utils/sessionInfoService.js.map +1 -0
  86. package/dist/src/auth.d.ts +14 -16
  87. package/dist/src/auth.d.ts.map +1 -1
  88. package/dist/src/auth.spec.d.ts +12 -0
  89. package/dist/src/auth.spec.d.ts.map +1 -1
  90. package/dist/src/authToken.d.ts +1 -1
  91. package/dist/src/authToken.d.ts.map +1 -1
  92. package/dist/src/embed/base.d.ts.map +1 -1
  93. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  94. package/dist/src/index.d.ts +2 -1
  95. package/dist/src/index.d.ts.map +1 -1
  96. package/dist/src/mixpanel-service.d.ts +2 -1
  97. package/dist/src/mixpanel-service.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/tokenizedFetch.d.ts +8 -0
  101. package/dist/src/tokenizedFetch.d.ts.map +1 -1
  102. package/dist/src/types.d.ts +12 -12
  103. package/dist/src/types.d.ts.map +1 -1
  104. package/dist/src/utils/authService/authService.d.ts +1 -0
  105. package/dist/src/utils/authService/authService.d.ts.map +1 -1
  106. package/dist/src/utils/authService/tokenizedAuthService.d.ts +15 -2
  107. package/dist/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
  108. package/dist/src/utils/authService/tokenizedAuthService.spec.d.ts +2 -0
  109. package/dist/src/utils/authService/tokenizedAuthService.spec.d.ts.map +1 -0
  110. package/dist/src/utils/sessionInfoService.d.ts +66 -0
  111. package/dist/src/utils/sessionInfoService.d.ts.map +1 -0
  112. package/dist/tsembed-react.es.js +169 -77
  113. package/dist/tsembed-react.js +169 -76
  114. package/dist/tsembed.es.js +177 -87
  115. package/dist/tsembed.js +177 -87
  116. package/dist/visual-embed-sdk-react-full.d.ts +102 -30
  117. package/dist/visual-embed-sdk-react.d.ts +102 -30
  118. package/dist/visual-embed-sdk.d.ts +102 -30
  119. package/lib/package.json +2 -2
  120. package/lib/src/auth.d.ts +14 -16
  121. package/lib/src/auth.d.ts.map +1 -1
  122. package/lib/src/auth.js +56 -63
  123. package/lib/src/auth.js.map +1 -1
  124. package/lib/src/auth.spec.d.ts +12 -0
  125. package/lib/src/auth.spec.d.ts.map +1 -1
  126. package/lib/src/auth.spec.js +88 -66
  127. package/lib/src/auth.spec.js.map +1 -1
  128. package/lib/src/authToken.d.ts +1 -1
  129. package/lib/src/authToken.d.ts.map +1 -1
  130. package/lib/src/authToken.js +10 -4
  131. package/lib/src/authToken.js.map +1 -1
  132. package/lib/src/embed/app.spec.js +4 -2
  133. package/lib/src/embed/app.spec.js.map +1 -1
  134. package/lib/src/embed/base.d.ts.map +1 -1
  135. package/lib/src/embed/base.js +3 -1
  136. package/lib/src/embed/base.js.map +1 -1
  137. package/lib/src/embed/base.spec.js +1 -0
  138. package/lib/src/embed/base.spec.js.map +1 -1
  139. package/lib/src/embed/embed.spec.js +2 -0
  140. package/lib/src/embed/embed.spec.js.map +1 -1
  141. package/lib/src/embed/events.spec.js +2 -0
  142. package/lib/src/embed/events.spec.js.map +1 -1
  143. package/lib/src/embed/liveboard.spec.js +2 -0
  144. package/lib/src/embed/liveboard.spec.js.map +1 -1
  145. package/lib/src/embed/pinboard.spec.js +2 -0
  146. package/lib/src/embed/pinboard.spec.js.map +1 -1
  147. package/lib/src/embed/sage.spec.js +2 -0
  148. package/lib/src/embed/sage.spec.js.map +1 -1
  149. package/lib/src/embed/search.spec.js +1 -0
  150. package/lib/src/embed/search.spec.js.map +1 -1
  151. package/lib/src/embed/ts-embed-trigger.spec.js +2 -0
  152. package/lib/src/embed/ts-embed-trigger.spec.js.map +1 -1
  153. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  154. package/lib/src/embed/ts-embed.js +1 -0
  155. package/lib/src/embed/ts-embed.js.map +1 -1
  156. package/lib/src/embed/ts-embed.spec.js +7 -0
  157. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  158. package/lib/src/index.d.ts +2 -1
  159. package/lib/src/index.d.ts.map +1 -1
  160. package/lib/src/index.js +2 -1
  161. package/lib/src/index.js.map +1 -1
  162. package/lib/src/mixpanel-service.d.ts +2 -1
  163. package/lib/src/mixpanel-service.d.ts.map +1 -1
  164. package/lib/src/mixpanel-service.js +1 -0
  165. package/lib/src/mixpanel-service.js.map +1 -1
  166. package/lib/src/mixpanel-service.spec.js +7 -0
  167. package/lib/src/mixpanel-service.spec.js.map +1 -1
  168. package/lib/src/react/index.d.ts +1 -1
  169. package/lib/src/react/index.d.ts.map +1 -1
  170. package/lib/src/react/index.js +1 -1
  171. package/lib/src/react/index.js.map +1 -1
  172. package/lib/src/react/index.spec.js +6 -0
  173. package/lib/src/react/index.spec.js.map +1 -1
  174. package/lib/src/tokenizedFetch.d.ts +8 -0
  175. package/lib/src/tokenizedFetch.d.ts.map +1 -1
  176. package/lib/src/tokenizedFetch.js +8 -0
  177. package/lib/src/tokenizedFetch.js.map +1 -1
  178. package/lib/src/types.d.ts +12 -12
  179. package/lib/src/types.d.ts.map +1 -1
  180. package/lib/src/types.js +12 -12
  181. package/lib/src/types.js.map +1 -1
  182. package/lib/src/utils/authService/authService.d.ts +1 -0
  183. package/lib/src/utils/authService/authService.d.ts.map +1 -1
  184. package/lib/src/utils/authService/authService.js +1 -0
  185. package/lib/src/utils/authService/authService.js.map +1 -1
  186. package/lib/src/utils/authService/authService.spec.js +18 -5
  187. package/lib/src/utils/authService/authService.spec.js.map +1 -1
  188. package/lib/src/utils/authService/tokenizedAuthService.d.ts +15 -2
  189. package/lib/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
  190. package/lib/src/utils/authService/tokenizedAuthService.js +37 -8
  191. package/lib/src/utils/authService/tokenizedAuthService.js.map +1 -1
  192. package/lib/src/utils/authService/tokenizedAuthService.spec.d.ts +2 -0
  193. package/lib/src/utils/authService/tokenizedAuthService.spec.d.ts.map +1 -0
  194. package/lib/src/utils/authService/tokenizedAuthService.spec.js +29 -0
  195. package/lib/src/utils/authService/tokenizedAuthService.spec.js.map +1 -0
  196. package/lib/src/utils/processData.js +3 -3
  197. package/lib/src/utils/processData.js.map +1 -1
  198. package/lib/src/utils/processData.spec.js +3 -2
  199. package/lib/src/utils/processData.spec.js.map +1 -1
  200. package/lib/src/utils/sessionInfoService.d.ts +66 -0
  201. package/lib/src/utils/sessionInfoService.d.ts.map +1 -0
  202. package/lib/src/utils/sessionInfoService.js +85 -0
  203. package/lib/src/utils/sessionInfoService.js.map +1 -0
  204. package/lib/src/visual-embed-sdk.d.ts +107 -31
  205. package/package.json +2 -2
  206. package/src/auth.spec.ts +92 -72
  207. package/src/auth.ts +57 -75
  208. package/src/authToken.ts +9 -4
  209. package/src/embed/app.spec.ts +4 -2
  210. package/src/embed/base.spec.ts +1 -0
  211. package/src/embed/base.ts +3 -0
  212. package/src/embed/embed.spec.ts +2 -0
  213. package/src/embed/events.spec.ts +2 -0
  214. package/src/embed/liveboard.spec.ts +2 -0
  215. package/src/embed/pinboard.spec.ts +2 -0
  216. package/src/embed/sage.spec.ts +3 -0
  217. package/src/embed/search.spec.ts +1 -0
  218. package/src/embed/ts-embed-trigger.spec.ts +3 -0
  219. package/src/embed/ts-embed.spec.ts +8 -0
  220. package/src/embed/ts-embed.ts +1 -0
  221. package/src/index.ts +2 -1
  222. package/src/mixpanel-service.spec.ts +12 -3
  223. package/src/mixpanel-service.ts +3 -1
  224. package/src/react/index.spec.tsx +7 -0
  225. package/src/react/index.tsx +1 -0
  226. package/src/tokenizedFetch.ts +8 -0
  227. package/src/types.ts +13 -12
  228. package/src/utils/authService/authService.spec.ts +18 -5
  229. package/src/utils/authService/authService.ts +1 -0
  230. package/src/utils/authService/tokenizedAuthService.spec.ts +36 -0
  231. package/src/utils/authService/tokenizedAuthService.ts +38 -8
  232. package/src/utils/processData.spec.ts +3 -2
  233. package/src/utils/processData.ts +3 -3
  234. package/src/utils/sessionInfoService.ts +101 -0
package/dist/tsembed.js CHANGED
@@ -1481,13 +1481,12 @@
1481
1481
  * Emitted when parameter changes in an answer
1482
1482
  * or liveboard
1483
1483
  *
1484
- * @version SDK : 1.29.0 | Thoughtspot : 10.2.0.cl
1485
- * @example
1486
1484
  * ```js
1487
1485
  * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => {
1488
1486
  * console.log('payload', payload);
1489
1487
  * })
1490
1488
  *```
1489
+ * @version SDK : 1.29.0 | Thoughtspot : 10.2.0.cl
1491
1490
  */
1492
1491
  EmbedEvent["ParameterChanged"] = "parameterChanged";
1493
1492
  })(exports.EmbedEvent || (exports.EmbedEvent = {}));
@@ -1686,7 +1685,7 @@
1686
1685
  * sorting, toggling of legends, and data drill down.
1687
1686
  * @example
1688
1687
  * ```js
1689
- * liveboardEmbed.trigger(HostEvent.getexportrequestforcurrentpinboard).then(
1688
+ * liveboardEmbed.trigger(HostEvent.getExportRequestForCurrentPinboard).then(
1690
1689
  * data=>console.log(data))
1691
1690
  * ```
1692
1691
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1.sw
@@ -2296,15 +2295,6 @@
2296
2295
  * @version SDK: 1.29.0 | Thoughtspot: 10.1.0.cl
2297
2296
  */
2298
2297
  HostEvent["ResetLiveboardPersonalisedView"] = "ResetLiveboardPersonalisedView";
2299
- /**
2300
- * Trigger CreateLiveboard for liveboard list page & Pin Modal
2301
- * @example
2302
- * ```js
2303
- * liveboardEmbed.trigger(HostEvent.CreateLiveboard);
2304
- *
2305
- * @version SDK: 1.29.0 | Thoughtspot: 10.1.0.cl
2306
- */
2307
- HostEvent["CreateLiveboard"] = "CreateLiveboard";
2308
2298
  /**
2309
2299
  * Triggers Update RuntimeParameters for answers and liveboard
2310
2300
  * @example
@@ -3263,6 +3253,16 @@
3263
3253
  * @version SDK : 1.28.3 | Thoughtspot: 9.12.0.cl
3264
3254
  */
3265
3255
  Action["TML"] = "tml";
3256
+ /**
3257
+ * Action Id for CreateLiveboard for liveboard list page & Pin Modal
3258
+ * @example
3259
+ * ```js
3260
+ * hiddenAction: [Action.CreateLiveboard]
3261
+ * disabledActions: [Action.CreateLiveboard]
3262
+ *
3263
+ * @version SDK: 1.31.1 | Thoughtspot: 10.1.0.cl
3264
+ */
3265
+ Action["CreateLiveboard"] = "CreateLiveboard";
3266
3266
  /**
3267
3267
  * Action ID for to hide Verified Liveboard Banner
3268
3268
  * @example
@@ -5680,6 +5680,7 @@
5680
5680
 
5681
5681
  const EndPoints = {
5682
5682
  AUTH_VERIFICATION: '/callosum/v1/session/info',
5683
+ SESSION_INFO: '/callosum/v1/session/info',
5683
5684
  SAML_LOGIN_TEMPLATE: (targetUrl) => `/callosum/v1/saml/login?targetURLPath=${targetUrl}`,
5684
5685
  OIDC_LOGIN_TEMPLATE: (targetUrl) => `/callosum/v1/oidc/login?targetURLPath=${targetUrl}`,
5685
5686
  TOKEN_LOGIN: '/callosum/v1/session/login/token',
@@ -5795,7 +5796,7 @@
5795
5796
  const INVALID_TOKEN_ERR = 'Invalid token received form token callback or authToken endpoint.';
5796
5797
  let cachedAuthToken = null;
5797
5798
  // This method can be used to get the authToken using the embedConfig
5798
- const getAuthenticationToken = async (embedConfig) => {
5799
+ async function getAuthenticationToken(embedConfig) {
5799
5800
  // Since we don't have token validation enabled , we cannot tell if the
5800
5801
  // cached token is valid or not. So we will always fetch a new token.
5801
5802
  if (cachedAuthToken && !embedConfig.disableTokenVerification) {
@@ -5818,11 +5819,17 @@
5818
5819
  const response = await fetchAuthTokenService(authEndpoint);
5819
5820
  authToken = await response.text();
5820
5821
  }
5821
- // this will throw error if the token is not valid
5822
- await validateAuthToken(embedConfig, authToken);
5822
+ try {
5823
+ // this will throw error if the token is not valid
5824
+ await validateAuthToken(embedConfig, authToken);
5825
+ }
5826
+ catch (e) {
5827
+ logger.error(`Received invalid token from getAuthToken callback or authToken endpoint. Error : ${e.message}`);
5828
+ throw e;
5829
+ }
5823
5830
  cachedAuthToken = authToken;
5824
5831
  return authToken;
5825
- };
5832
+ }
5826
5833
  const validateAuthToken = async (embedConfig, authToken, suppressAlert) => {
5827
5834
  if (embedConfig.disableTokenVerification) {
5828
5835
  logger.info('Token verification is disabled. Assuming token is valid.');
@@ -5883,8 +5890,16 @@
5883
5890
  /**
5884
5891
  * Fetch wrapper that adds the authentication token to the request.
5885
5892
  * Use this to call the ThoughtSpot APIs when using the visual embed sdk.
5893
+ * The interface for this method is the same as Web `Fetch`.
5894
+ *
5886
5895
  * @param input
5887
5896
  * @param init
5897
+ * @example
5898
+ * ```js
5899
+ * tokenizedFetch("<TS_ORIGIN>/api/rest/2.0/auth/session/user", {
5900
+ * // .. fetch options ..
5901
+ * });
5902
+ *```
5888
5903
  * @version SDK: 1.28.0
5889
5904
  * @group Global methods
5890
5905
  */
@@ -12552,6 +12567,7 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
12552
12567
  function initMixpanel(sessionInfo) {
12553
12568
  var _a;
12554
12569
  if (!sessionInfo || !sessionInfo.mixpanelToken) {
12570
+ logger.error('Mixpanel token not found in session info');
12555
12571
  return;
12556
12572
  }
12557
12573
  // On a public cluster the user is anonymous, so don't set the identify to
@@ -12922,49 +12938,124 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
12922
12938
  * @param url
12923
12939
  * @param options
12924
12940
  */
12925
- function tokenisedFailureLoggedFetch(url, options = {}) {
12941
+ function tokenizedFailureLoggedFetch(url, options = {}) {
12926
12942
  return tokenizedFetch(url, options).then(async (r) => {
12927
12943
  var _a;
12928
12944
  if (!r.ok && r.type !== 'opaqueredirect' && r.type !== 'opaque') {
12929
- logger.error('Failure', await ((_a = r.text) === null || _a === void 0 ? void 0 : _a.call(r)));
12945
+ logger.error(`Failed to fetch ${url}`, await ((_a = r.text) === null || _a === void 0 ? void 0 : _a.call(r)));
12930
12946
  }
12931
12947
  return r;
12932
12948
  });
12933
12949
  }
12934
12950
  /**
12951
+ * Fetches the session info from the ThoughtSpot server.
12935
12952
  *
12936
- * @param authVerificationUrl
12953
+ * @param thoughtspotHost
12954
+ * @returns {Promise<any>}
12955
+ * @example
12956
+ * ```js
12957
+ * const response = await sessionInfoService();
12958
+ * ```
12937
12959
  */
12938
- function fetchSessionInfoService(authVerificationUrl) {
12939
- return tokenisedFailureLoggedFetch(authVerificationUrl, {
12940
- credentials: 'include',
12941
- });
12960
+ async function fetchSessionInfoService(thoughtspotHost) {
12961
+ const sessionInfoPath = `${thoughtspotHost}${EndPoints.SESSION_INFO}`;
12962
+ const response = await tokenizedFailureLoggedFetch(sessionInfoPath);
12963
+ if (!response.ok) {
12964
+ throw new Error(`Failed to fetch session info: ${response.statusText}`);
12965
+ }
12966
+ const data = await response.json();
12967
+ return data;
12942
12968
  }
12943
12969
  /**
12944
12970
  *
12945
12971
  * @param thoughtSpotHost
12946
12972
  */
12947
12973
  async function fetchLogoutService(thoughtSpotHost) {
12948
- return tokenisedFailureLoggedFetch(`${thoughtSpotHost}${EndPoints.LOGOUT}`, {
12974
+ return tokenizedFailureLoggedFetch(`${thoughtSpotHost}${EndPoints.LOGOUT}`, {
12949
12975
  credentials: 'include',
12950
12976
  method: 'POST',
12951
12977
  headers: {
12952
12978
  'x-requested-by': 'ThoughtSpot',
12953
12979
  },
12954
12980
  });
12981
+ }
12982
+ /**
12983
+ * Is active service to check if the user is logged in.
12984
+ *
12985
+ * @param thoughtSpotHost
12986
+ * @version SDK: 1.28.4 | ThoughtSpot: *
12987
+ */
12988
+ async function isActiveService(thoughtSpotHost) {
12989
+ const isActiveUrl = `${thoughtSpotHost}${EndPoints.IS_ACTIVE}`;
12990
+ try {
12991
+ const res = await tokenizedFetch(isActiveUrl, {
12992
+ credentials: 'include',
12993
+ });
12994
+ return res.ok;
12995
+ }
12996
+ catch (e) {
12997
+ logger.warn(`Is Logged In Service failed : ${e.message}`);
12998
+ }
12999
+ return false;
12955
13000
  }
12956
13001
 
13002
+ let sessionInfo = null;
13003
+ /**
13004
+ * Returns the session info object and caches it for future use.
13005
+ * Once fetched the session info object is cached and returned from the cache on
13006
+ * subsequent calls.
13007
+ *
13008
+ * @example ```js
13009
+ * const sessionInfo = await getSessionInfo();
13010
+ * console.log(sessionInfo);
13011
+ * ```
13012
+ * @version SDK: 1.28.3 | ThoughtSpot: *
13013
+ * @returns {Promise<SessionInfo>} The session info object.
13014
+ */
13015
+ async function getSessionInfo() {
13016
+ if (!sessionInfo) {
13017
+ const host = getEmbedConfig().thoughtSpotHost;
13018
+ const sessionResponse = await fetchSessionInfoService(host);
13019
+ const processedSessionInfo = getSessionDetails(sessionResponse);
13020
+ sessionInfo = processedSessionInfo;
13021
+ }
13022
+ return sessionInfo;
13023
+ }
13024
+ /**
13025
+ * Processes the session info response and returns the session info object.
13026
+ *
13027
+ * @param sessionInfoResp {any} Response from the session info API.
13028
+ * @returns {SessionInfo} The session info object.
13029
+ * @example ```js
13030
+ * const sessionInfoResp = await fetch(sessionInfoPath);
13031
+ * const sessionInfo = getSessionDetails(sessionInfoResp);
13032
+ * console.log(sessionInfo);
13033
+ * ```
13034
+ * @version SDK: 1.28.3 | ThoughtSpot: *
13035
+ */
13036
+ const getSessionDetails = (sessionInfoResp) => {
13037
+ const devMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.devSdkKey;
13038
+ const prodMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.prodSdkKey;
13039
+ const mixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.production
13040
+ ? prodMixpanelToken
13041
+ : devMixpanelToken;
13042
+ return {
13043
+ userGUID: sessionInfoResp.userGUID,
13044
+ mixpanelToken,
13045
+ isPublicUser: sessionInfoResp.configInfo.isPublicUser,
13046
+ releaseVersion: sessionInfoResp.releaseVersion,
13047
+ clusterId: sessionInfoResp.configInfo.selfClusterId,
13048
+ clusterName: sessionInfoResp.configInfo.selfClusterName,
13049
+ ...sessionInfoResp,
13050
+ };
13051
+ };
13052
+
12957
13053
  // eslint-disable-next-line import/no-mutable-exports
12958
13054
  let loggedInStatus = false;
12959
13055
  // eslint-disable-next-line import/no-mutable-exports
12960
13056
  let samlAuthWindow = null;
12961
13057
  // eslint-disable-next-line import/no-mutable-exports
12962
13058
  let samlCompletionPromise = null;
12963
- let sessionInfo = null;
12964
- let sessionInfoResolver = null;
12965
- const sessionInfoPromise = new Promise((resolve) => {
12966
- sessionInfoResolver = resolve;
12967
- });
12968
13059
  let releaseVersion = '';
12969
13060
  const SSO_REDIRECTION_MARKER_GUID = '5e16222e-ef02-43e9-9fbd-24226bf3ce5b';
12970
13061
  (function (AuthFailureType) {
@@ -13026,12 +13117,18 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
13026
13117
  /**
13027
13118
  *
13028
13119
  */
13029
- function notifyAuthSuccess() {
13120
+ async function notifyAuthSuccess() {
13030
13121
  if (!authEE) {
13031
13122
  logger.error('SDK not initialized');
13032
13123
  return;
13033
13124
  }
13034
- authEE.emit(exports.AuthStatus.SUCCESS, sessionInfo);
13125
+ try {
13126
+ const sessionInfo = await getSessionInfo();
13127
+ authEE.emit(exports.AuthStatus.SUCCESS, sessionInfo);
13128
+ }
13129
+ catch (e) {
13130
+ logger.error('Failed to get session info');
13131
+ }
13035
13132
  }
13036
13133
  /**
13037
13134
  *
@@ -13054,65 +13151,49 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
13054
13151
  }
13055
13152
  authEE.emit(exports.AuthStatus.LOGOUT);
13056
13153
  }
13057
- const initSession = (sessionDetails) => {
13058
- const embedConfig = getEmbedConfig();
13059
- if (sessionInfo == null) {
13060
- sessionInfo = sessionDetails;
13061
- if (!embedConfig.disableSDKTracking) {
13062
- initMixpanel(sessionInfo);
13063
- }
13064
- sessionInfoResolver(sessionInfo);
13065
- }
13066
- };
13067
- const getSessionDetails = (sessionInfoResp) => {
13068
- const devMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.devSdkKey;
13069
- const prodMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.prodSdkKey;
13070
- const mixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.production
13071
- ? prodMixpanelToken
13072
- : devMixpanelToken;
13073
- return {
13074
- userGUID: sessionInfoResp.userGUID,
13075
- mixpanelToken,
13076
- isPublicUser: sessionInfoResp.configInfo.isPublicUser,
13077
- releaseVersion: sessionInfoResp.releaseVersion,
13078
- clusterId: sessionInfoResp.configInfo.selfClusterId,
13079
- clusterName: sessionInfoResp.configInfo.selfClusterName,
13080
- ...sessionInfoResp,
13081
- };
13082
- };
13083
13154
  /**
13084
13155
  * Check if we are logged into the ThoughtSpot cluster
13085
13156
  * @param thoughtSpotHost The ThoughtSpot cluster hostname or IP
13086
13157
  */
13087
13158
  async function isLoggedIn(thoughtSpotHost) {
13088
- const authVerificationUrl = `${thoughtSpotHost}${EndPoints.AUTH_VERIFICATION}`;
13089
- let response = null;
13090
13159
  try {
13091
- response = await fetchSessionInfoService(authVerificationUrl);
13092
- const sessionInfoResp = await response.json();
13093
- const sessionDetails = getSessionDetails(sessionInfoResp);
13094
- // Store user session details from session info
13095
- initSession(sessionDetails);
13096
- releaseVersion = sessionInfoResp.releaseVersion;
13160
+ const response = await isActiveService(thoughtSpotHost);
13161
+ return response;
13097
13162
  }
13098
13163
  catch (e) {
13099
13164
  return false;
13100
13165
  }
13101
- return response.status === 200;
13102
13166
  }
13103
13167
  /**
13104
- * Return releaseVersion if available
13168
+ * Services to be called after the login is successful,
13169
+ * This should be called after the cookie is set for cookie auth or
13170
+ * after the token is set for cookieless.
13171
+ *
13172
+ * @return {Promise<void>}
13173
+ * @example
13174
+ * ```js
13175
+ * await postLoginService();
13176
+ * ```
13177
+ * @version SDK: 1.28.3 | ThoughtSpot: *
13105
13178
  */
13106
- function getReleaseVersion() {
13107
- return releaseVersion;
13179
+ async function postLoginService() {
13180
+ try {
13181
+ const sessionInfo = await getSessionInfo();
13182
+ releaseVersion = sessionInfo.releaseVersion;
13183
+ const embedConfig = getEmbedConfig();
13184
+ if (!embedConfig.disableSDKTracking) {
13185
+ initMixpanel(sessionInfo);
13186
+ }
13187
+ }
13188
+ catch (e) {
13189
+ logger.error('Post login services failed.', e.message);
13190
+ }
13108
13191
  }
13109
13192
  /**
13110
- * Return a promise that resolves with the session information when
13111
- * authentication is successful. And info is available.
13112
- * @group Global methods
13193
+ * Return releaseVersion if available
13113
13194
  */
13114
- function getSessionInfo() {
13115
- return sessionInfoPromise;
13195
+ function getReleaseVersion() {
13196
+ return releaseVersion;
13116
13197
  }
13117
13198
  /**
13118
13199
  * Check if we are stuck at the SSO redirect URL
@@ -13142,7 +13223,14 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
13142
13223
  }
13143
13224
  loggedInStatus = await isLoggedIn(thoughtSpotHost);
13144
13225
  if (!loggedInStatus) {
13145
- const authToken = await getAuthenticationToken(embedConfig);
13226
+ let authToken;
13227
+ try {
13228
+ authToken = await getAuthenticationToken(embedConfig);
13229
+ }
13230
+ catch (e) {
13231
+ loggedInStatus = false;
13232
+ throw e;
13233
+ }
13146
13234
  let resp;
13147
13235
  try {
13148
13236
  resp = await fetchAuthPostService(thoughtSpotHost, username, authToken);
@@ -13227,15 +13315,14 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
13227
13315
  authElem.textContent = triggerText;
13228
13316
  authElem.addEventListener('click', openPopup, { once: true });
13229
13317
  }
13230
- samlCompletionPromise = samlCompletionPromise
13231
- || new Promise((resolve, reject) => {
13232
- window.addEventListener('message', (e) => {
13233
- if (e.data.type === exports.EmbedEvent.SAMLComplete) {
13234
- e.source.close();
13235
- resolve();
13236
- }
13237
- });
13318
+ samlCompletionPromise = samlCompletionPromise || new Promise((resolve, reject) => {
13319
+ window.addEventListener('message', (e) => {
13320
+ if (e.data.type === exports.EmbedEvent.SAMLComplete) {
13321
+ e.source.close();
13322
+ resolve();
13323
+ }
13238
13324
  });
13325
+ });
13239
13326
  authEE === null || authEE === void 0 ? void 0 : authEE.once(exports.AuthEvent.TRIGGER_SSO_POPUP, openPopup);
13240
13327
  return samlCompletionPromise;
13241
13328
  }
@@ -13297,7 +13384,7 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
13297
13384
  const { thoughtSpotHost } = embedConfig;
13298
13385
  await fetchLogoutService(thoughtSpotHost);
13299
13386
  resetCachedAuthToken();
13300
- const thoughtspotIframes = document.querySelectorAll('[data-ts-iframe=\'true\']');
13387
+ const thoughtspotIframes = document.querySelectorAll("[data-ts-iframe='true']");
13301
13388
  if (thoughtspotIframes === null || thoughtspotIframes === void 0 ? void 0 : thoughtspotIframes.length) {
13302
13389
  thoughtspotIframes.forEach((el) => {
13303
13390
  el.parentElement.innerHTML = embedConfig.loginFailedMessage;
@@ -13351,6 +13438,8 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
13351
13438
  notifyAuthFailure(exports.AuthFailureType.SDK);
13352
13439
  }
13353
13440
  else {
13441
+ // Post login service is called after successful login.
13442
+ postLoginService();
13354
13443
  notifyAuthSDKSuccess();
13355
13444
  }
13356
13445
  }, () => {
@@ -13642,13 +13731,13 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
13642
13731
  };
13643
13732
  }
13644
13733
  /**
13734
+ * Responds to AuthInit sent from host signifying successful authentication in host.
13645
13735
  *
13646
13736
  * @param e
13737
+ * @returns {any}
13647
13738
  */
13648
13739
  function processAuthInit(e) {
13649
13740
  var _a, _b;
13650
- // Store user session details sent by app.
13651
- initSession(e.data);
13652
13741
  notifyAuthSuccess();
13653
13742
  // Expose only allowed details (eg: userGUID) back to SDK users.
13654
13743
  return {
@@ -13784,7 +13873,7 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
13784
13873
  });
13785
13874
  }
13786
13875
 
13787
- var name="@thoughtspot/visual-embed-sdk";var version="1.31.1";var description="ThoughtSpot Embed SDK";var module="lib/src/index.js";var main="dist/tsembed.js";var types="lib/src/index.d.ts";var files=["dist/**","lib/**","src/**","cjs/**"];var exports$1={".":{"import":"./lib/src/index.js",require:"./cjs/src/index.js",types:"./lib/src/index.d.ts"},"./react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"},"./lib/src/react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"}};var typesVersions={"*":{react:["./lib/src/react/all-types-export.d.ts"]}};var scripts={lint:"eslint 'src/**'","lint:fix":"eslint 'src/**/*.*' --fix",tsc:"tsc -p . --incremental false; tsc -p . --incremental false --module commonjs --outDir cjs",start:"gatsby develop","build:gatsby":"npm run clean:gatsby && gatsby build --prefix-paths","build:gatsby:noprefix":"npm run clean:gatsby && gatsby build","serve:gatsby":"gatsby serve","clean:gatsby":"gatsby clean","build-and-publish":"npm run build:gatsby && npm run publish","bundle-dts-file":"dts-bundle --name @thoughtspot/visual-embed-sdk --out visual-embed-sdk.d.ts --main lib/src/index.d.ts","bundle-dts":"dts-bundle --name ../../dist/visual-embed-sdk --main lib/src/index.d.ts --outputAsModuleFolder=true","bundle-dts-react":"dts-bundle --name ../../../dist/visual-embed-sdk-react --main lib/src/react/index.d.ts --outputAsModuleFolder=true","bundle-dts-react-full":"dts-bundle --name ../../../dist/visual-embed-sdk-react-full --main lib/src/react/all-types-export.d.ts --outputAsModuleFolder=true",build:"rollup -c",watch:"rollup -cw","docs-cmd":"node scripts/gatsby-commands.js",docgen:"typedoc --tsconfig tsconfig.json --theme typedoc-theme","test-sdk":"jest -c jest.config.sdk.js --runInBand","test-docs":"jest -c jest.config.docs.js",test:"npm run test-sdk && npm run test-docs",posttest:"cat ./coverage/sdk/lcov.info | coveralls","is-publish-allowed":"node scripts/is-publish-allowed.js",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","check-size":"npm run build && size-limit","publish-dev":"npm publish --tag dev","publish-prod":"npm publish --tag latest"};var peerDependencies={react:"> 16.8.0","react-dom":"> 16.8.0"};var dependencies={algoliasearch:"^4.10.5",classnames:"^2.3.1",dompurify:"^2.3.4","eslint-plugin-comment-length":"^0.9.2","eslint-plugin-jsdoc":"^46.9.0",eventemitter3:"^4.0.7","gatsby-plugin-vercel":"^1.0.3","html-react-parser":"^1.4.12",lodash:"^4.17.21","mixpanel-browser":"^2.45.0","ts-deepmerge":"^6.0.2",tslib:"^2.5.3","use-deep-compare-effect":"^1.8.1"};var devDependencies={"@mdx-js/mdx":"^1.6.22","@mdx-js/react":"^1.6.22","@react-icons/all-files":"^4.1.0","@rollup/plugin-commonjs":"^18.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^11.2.1","@rollup/plugin-replace":"^5.0.2","@size-limit/preset-big-lib":"^8.2.6","@testing-library/dom":"^7.31.0","@testing-library/jest-dom":"^5.14.1","@testing-library/react":"^11.2.7","@testing-library/user-event":"^13.1.8","@types/jest":"^22.2.3","@types/mixpanel-browser":"^2.35.6","@types/react-test-renderer":"^17.0.1","@typescript-eslint/eslint-plugin":"^4.6.0","@typescript-eslint/parser":"^4.6.0",asciidoctor:"^2.2.1","babel-jest":"^26.6.3","babel-preset-gatsby":"^1.10.0","command-line-args":"^5.1.1",coveralls:"^3.1.0","current-git-branch":"^1.1.0","dts-bundle":"^0.7.3",eslint:"^7.12.1","eslint-config-airbnb-base":"^14.2.0","eslint-config-prettier":"^6.15.0","eslint-import-resolver-typescript":"^2.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-prettier":"^3.1.4","eslint-plugin-react-hooks":"^4.2.0","fs-extra":"^10.0.0",gatsby:"3.13.1","gatsby-plugin-algolia":"^0.22.2","gatsby-plugin-catch-links":"^3.1.0","gatsby-plugin-env-variables":"^2.1.0","gatsby-plugin-intl":"^0.3.3","gatsby-plugin-manifest":"^3.2.0","gatsby-plugin-output":"^0.1.3","gatsby-plugin-sass":"6.7.0","gatsby-plugin-sitemap":"^4.10.0","gatsby-source-filesystem":"3.1.0","gatsby-transformer-asciidoc":"2.1.0","gatsby-transformer-rehype":"2.0.0","gh-pages":"^3.1.0","highlight.js":"^10.6.0","html-to-text":"^8.0.0","identity-obj-proxy":"^3.0.0","istanbul-merge":"^1.1.1",jest:"^26.6.3","jest-fetch-mock":"^3.0.3",jsdom:"^17.0.0","node-sass":"^8.0.0",prettier:"2.1.2",react:"^16.14.0","react-dom":"^16.14.0","react-resizable":"^1.11.0","react-resize-detector":"^6.6.0","react-test-renderer":"^17.0.2","react-use-flexsearch":"^0.1.1",rollup:"2.30.0","rollup-plugin-typescript2":"0.27.3","ts-jest":"^26.5.5","ts-loader":"8.0.4",typedoc:"0.21.6","typedoc-plugin-toc-group":"thoughtspot/typedoc-plugin-toc-group",typescript:"^4.9.4","url-search-params-polyfill":"^8.1.0",util:"^0.12.4"};var author="ThoughtSpot";var email="support@thoughtspot.com";var license="ThoughtSpot Development Tools End User License Agreement";var directories={lib:"lib"};var repository={type:"git",url:"git+https://github.com/thoughtspot/visual-embed-sdk.git"};var publishConfig={registry:"https://registry.npmjs.org"};var keywords=["thoughtspot","everywhere","embedded","embed","sdk","analytics"];var bugs={url:"https://github.com/thoughtspot/visual-embed-sdk/issues"};var homepage="https://github.com/thoughtspot/visual-embed-sdk#readme";var globals={window:{}};var pkgInfo = {name:name,version:version,description:description,module:module,main:main,types:types,files:files,exports:exports$1,typesVersions:typesVersions,"size-limit":[{path:"dist/tsembed.js",limit:"45 kB"}],scripts:scripts,peerDependencies:peerDependencies,dependencies:dependencies,devDependencies:devDependencies,author:author,email:email,license:license,directories:directories,repository:repository,publishConfig:publishConfig,keywords:keywords,bugs:bugs,homepage:homepage,globals:globals};
13876
+ var name="@thoughtspot/visual-embed-sdk";var version="1.32.0-alpha.1";var description="ThoughtSpot Embed SDK";var module="lib/src/index.js";var main="dist/tsembed.js";var types="lib/src/index.d.ts";var files=["dist/**","lib/**","src/**","cjs/**"];var exports$1={".":{"import":"./lib/src/index.js",require:"./cjs/src/index.js",types:"./lib/src/index.d.ts"},"./react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"},"./lib/src/react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"}};var typesVersions={"*":{react:["./lib/src/react/all-types-export.d.ts"]}};var scripts={lint:"eslint 'src/**'","lint:fix":"eslint 'src/**/*.*' --fix",tsc:"tsc -p . --incremental false; tsc -p . --incremental false --module commonjs --outDir cjs",start:"gatsby develop","build:gatsby":"npm run clean:gatsby && gatsby build --prefix-paths","build:gatsby:noprefix":"npm run clean:gatsby && gatsby build","serve:gatsby":"gatsby serve","clean:gatsby":"gatsby clean","build-and-publish":"npm run build:gatsby && npm run publish","bundle-dts-file":"dts-bundle --name @thoughtspot/visual-embed-sdk --out visual-embed-sdk.d.ts --main lib/src/index.d.ts","bundle-dts":"dts-bundle --name ../../dist/visual-embed-sdk --main lib/src/index.d.ts --outputAsModuleFolder=true","bundle-dts-react":"dts-bundle --name ../../../dist/visual-embed-sdk-react --main lib/src/react/index.d.ts --outputAsModuleFolder=true","bundle-dts-react-full":"dts-bundle --name ../../../dist/visual-embed-sdk-react-full --main lib/src/react/all-types-export.d.ts --outputAsModuleFolder=true",build:"rollup -c",watch:"rollup -cw","docs-cmd":"node scripts/gatsby-commands.js",docgen:"typedoc --tsconfig tsconfig.json --theme typedoc-theme","test-sdk":"jest -c jest.config.sdk.js --runInBand","test-docs":"jest -c jest.config.docs.js",test:"npm run test-sdk && npm run test-docs",posttest:"cat ./coverage/sdk/lcov.info | coveralls","is-publish-allowed":"node scripts/is-publish-allowed.js",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","check-size":"npm run build && size-limit","publish-dev":"npm publish --tag dev","publish-prod":"npm publish --tag latest"};var peerDependencies={react:"> 16.8.0","react-dom":"> 16.8.0"};var dependencies={algoliasearch:"^4.10.5",classnames:"^2.3.1",dompurify:"^2.3.4","eslint-plugin-comment-length":"^0.9.2","eslint-plugin-jsdoc":"^46.9.0",eventemitter3:"^4.0.7","gatsby-plugin-vercel":"^1.0.3","html-react-parser":"^1.4.12",lodash:"^4.17.21","mixpanel-browser":"^2.45.0","ts-deepmerge":"^6.0.2",tslib:"^2.5.3","use-deep-compare-effect":"^1.8.1"};var devDependencies={"@mdx-js/mdx":"^1.6.22","@mdx-js/react":"^1.6.22","@react-icons/all-files":"^4.1.0","@rollup/plugin-commonjs":"^18.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^11.2.1","@rollup/plugin-replace":"^5.0.2","@size-limit/preset-big-lib":"^8.2.6","@testing-library/dom":"^7.31.0","@testing-library/jest-dom":"^5.14.1","@testing-library/react":"^11.2.7","@testing-library/user-event":"^13.1.8","@types/jest":"^22.2.3","@types/mixpanel-browser":"^2.35.6","@types/react-test-renderer":"^17.0.1","@typescript-eslint/eslint-plugin":"^4.6.0","@typescript-eslint/parser":"^4.6.0",asciidoctor:"^2.2.1","babel-jest":"^26.6.3","babel-preset-gatsby":"^1.10.0","command-line-args":"^5.1.1",coveralls:"^3.1.0","current-git-branch":"^1.1.0","dts-bundle":"^0.7.3",eslint:"^7.12.1","eslint-config-airbnb-base":"^14.2.0","eslint-config-prettier":"^6.15.0","eslint-import-resolver-typescript":"^2.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-prettier":"^3.1.4","eslint-plugin-react-hooks":"^4.2.0","fs-extra":"^10.0.0",gatsby:"3.13.1","gatsby-plugin-algolia":"^0.22.2","gatsby-plugin-catch-links":"^3.1.0","gatsby-plugin-env-variables":"^2.1.0","gatsby-plugin-intl":"^0.3.3","gatsby-plugin-manifest":"^3.2.0","gatsby-plugin-output":"^0.1.3","gatsby-plugin-sass":"6.7.0","gatsby-plugin-sitemap":"^4.10.0","gatsby-source-filesystem":"3.1.0","gatsby-transformer-asciidoc":"2.1.0","gatsby-transformer-rehype":"2.0.0","gh-pages":"^3.1.0","highlight.js":"^10.6.0","html-to-text":"^8.0.0","identity-obj-proxy":"^3.0.0","istanbul-merge":"^1.1.1",jest:"^26.6.3","jest-fetch-mock":"^3.0.3",jsdom:"^17.0.0","node-sass":"^8.0.0",prettier:"2.1.2",react:"^16.14.0","react-dom":"^16.14.0","react-resizable":"^1.11.0","react-resize-detector":"^6.6.0","react-test-renderer":"^17.0.2","react-use-flexsearch":"^0.1.1",rollup:"2.30.0","rollup-plugin-typescript2":"0.27.3","ts-jest":"^26.5.5","ts-loader":"8.0.4",typedoc:"0.21.6","typedoc-plugin-toc-group":"thoughtspot/typedoc-plugin-toc-group",typescript:"^4.9.4","url-search-params-polyfill":"^8.1.0",util:"^0.12.4"};var author="ThoughtSpot";var email="support@thoughtspot.com";var license="ThoughtSpot Development Tools End User License Agreement";var directories={lib:"lib"};var repository={type:"git",url:"git+https://github.com/thoughtspot/visual-embed-sdk.git"};var publishConfig={registry:"https://registry.npmjs.org"};var keywords=["thoughtspot","everywhere","embedded","embed","sdk","analytics"];var bugs={url:"https://github.com/thoughtspot/visual-embed-sdk/issues"};var homepage="https://github.com/thoughtspot/visual-embed-sdk#readme";var globals={window:{}};var pkgInfo = {name:name,version:version,description:description,module:module,main:main,types:types,files:files,exports:exports$1,typesVersions:typesVersions,"size-limit":[{path:"dist/tsembed.js",limit:"46 kB"}],scripts:scripts,peerDependencies:peerDependencies,dependencies:dependencies,devDependencies:devDependencies,author:author,email:email,license:license,directories:directories,repository:repository,publishConfig:publishConfig,keywords:keywords,bugs:bugs,homepage:homepage,globals:globals};
13788
13877
 
13789
13878
  /**
13790
13879
  * Copyright (c) 2022
@@ -13882,6 +13971,7 @@ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!]
13882
13971
  });
13883
13972
  }
13884
13973
  catch (e) {
13974
+ logger.error(`Received invalid token. Error : ${e === null || e === void 0 ? void 0 : e.message}`);
13885
13975
  processAuthFailure(e, this.isPreRendered ? this.preRenderWrapper : this.el);
13886
13976
  }
13887
13977
  }