@thoughtspot/visual-embed-sdk 1.44.1 → 1.44.3

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 (246) hide show
  1. package/cjs/package.json +6 -5
  2. package/cjs/src/api-intercept.d.ts.map +1 -1
  3. package/cjs/src/api-intercept.js +8 -3
  4. package/cjs/src/api-intercept.js.map +1 -1
  5. package/cjs/src/api-intercept.spec.js +19 -3
  6. package/cjs/src/api-intercept.spec.js.map +1 -1
  7. package/cjs/src/auth.spec.js +43 -42
  8. package/cjs/src/auth.spec.js.map +1 -1
  9. package/cjs/src/authToken.spec.js +3 -3
  10. package/cjs/src/authToken.spec.js.map +1 -1
  11. package/cjs/src/embed/app.d.ts +17 -0
  12. package/cjs/src/embed/app.d.ts.map +1 -1
  13. package/cjs/src/embed/app.js +9 -5
  14. package/cjs/src/embed/app.js.map +1 -1
  15. package/cjs/src/embed/app.spec.js +96 -6
  16. package/cjs/src/embed/app.spec.js.map +1 -1
  17. package/cjs/src/embed/base.d.ts +1 -1
  18. package/cjs/src/embed/base.d.ts.map +1 -1
  19. package/cjs/src/embed/base.js +4 -0
  20. package/cjs/src/embed/base.js.map +1 -1
  21. package/cjs/src/embed/base.spec.js +71 -15
  22. package/cjs/src/embed/base.spec.js.map +1 -1
  23. package/cjs/src/embed/bodyless-conversation.spec.js +2 -2
  24. package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
  25. package/cjs/src/embed/conversation.d.ts.map +1 -1
  26. package/cjs/src/embed/conversation.js +6 -1
  27. package/cjs/src/embed/conversation.js.map +1 -1
  28. package/cjs/src/embed/conversation.spec.js +8 -3
  29. package/cjs/src/embed/conversation.spec.js.map +1 -1
  30. package/cjs/src/embed/embed.spec.js +101 -2
  31. package/cjs/src/embed/embed.spec.js.map +1 -1
  32. package/cjs/src/embed/events.spec.js +2 -2
  33. package/cjs/src/embed/events.spec.js.map +1 -1
  34. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +1 -1
  35. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  36. package/cjs/src/embed/liveboard.d.ts +18 -0
  37. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  38. package/cjs/src/embed/liveboard.js +13 -6
  39. package/cjs/src/embed/liveboard.js.map +1 -1
  40. package/cjs/src/embed/liveboard.spec.js +114 -26
  41. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  42. package/cjs/src/embed/pinboard.spec.js +1 -1
  43. package/cjs/src/embed/pinboard.spec.js.map +1 -1
  44. package/cjs/src/embed/sage.spec.js +2 -2
  45. package/cjs/src/embed/sage.spec.js.map +1 -1
  46. package/cjs/src/embed/search.spec.js +118 -2
  47. package/cjs/src/embed/search.spec.js.map +1 -1
  48. package/cjs/src/embed/ts-embed-trigger.spec.js +2 -3
  49. package/cjs/src/embed/ts-embed-trigger.spec.js.map +1 -1
  50. package/cjs/src/embed/ts-embed.d.ts +3 -2
  51. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  52. package/cjs/src/embed/ts-embed.js +51 -17
  53. package/cjs/src/embed/ts-embed.js.map +1 -1
  54. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
  55. package/cjs/src/embed/ts-embed.spec.js +335 -71
  56. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  57. package/cjs/src/errors.d.ts +8 -0
  58. package/cjs/src/errors.d.ts.map +1 -1
  59. package/cjs/src/errors.js +8 -0
  60. package/cjs/src/errors.js.map +1 -1
  61. package/cjs/src/mixpanel-service.spec.js +1 -1
  62. package/cjs/src/mixpanel-service.spec.js.map +1 -1
  63. package/cjs/src/react/index.spec.js +3 -4
  64. package/cjs/src/react/index.spec.js.map +1 -1
  65. package/cjs/src/test/test-utils.js +1 -1
  66. package/cjs/src/test/test-utils.js.map +1 -1
  67. package/cjs/src/types.d.ts +194 -1
  68. package/cjs/src/types.d.ts.map +1 -1
  69. package/cjs/src/types.js +94 -2
  70. package/cjs/src/types.js.map +1 -1
  71. package/cjs/src/utils/authService/authService.spec.js +8 -8
  72. package/cjs/src/utils/authService/authService.spec.js.map +1 -1
  73. package/cjs/src/utils/authService/tokenizedAuthService.spec.js.map +1 -1
  74. package/cjs/src/utils/graphql/answerService/answerService.spec.js +1 -1
  75. package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
  76. package/cjs/src/utils/graphql/graphql-request.spec.js +1 -1
  77. package/cjs/src/utils/graphql/graphql-request.spec.js.map +1 -1
  78. package/cjs/src/utils/graphql/sourceService.spec.js +1 -1
  79. package/cjs/src/utils/graphql/sourceService.spec.js.map +1 -1
  80. package/cjs/src/utils/logger.spec.d.ts +5 -20
  81. package/cjs/src/utils/logger.spec.d.ts.map +1 -1
  82. package/cjs/src/utils/processData.spec.js +17 -17
  83. package/cjs/src/utils/processData.spec.js.map +1 -1
  84. package/cjs/src/utils/processTrigger.spec.js +8 -8
  85. package/cjs/src/utils/processTrigger.spec.js.map +1 -1
  86. package/cjs/src/utils.d.ts +16 -3
  87. package/cjs/src/utils.d.ts.map +1 -1
  88. package/cjs/src/utils.js +60 -5
  89. package/cjs/src/utils.js.map +1 -1
  90. package/cjs/src/utils.spec.js +72 -10
  91. package/cjs/src/utils.spec.js.map +1 -1
  92. package/dist/{index-BE9gGzRX.js → index-D0n5LIka.js} +1 -1
  93. package/dist/src/api-intercept.d.ts.map +1 -1
  94. package/dist/src/embed/app.d.ts +17 -0
  95. package/dist/src/embed/app.d.ts.map +1 -1
  96. package/dist/src/embed/base.d.ts +1 -1
  97. package/dist/src/embed/base.d.ts.map +1 -1
  98. package/dist/src/embed/conversation.d.ts.map +1 -1
  99. package/dist/src/embed/liveboard.d.ts +18 -0
  100. package/dist/src/embed/liveboard.d.ts.map +1 -1
  101. package/dist/src/embed/ts-embed.d.ts +3 -2
  102. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  103. package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
  104. package/dist/src/errors.d.ts +8 -0
  105. package/dist/src/errors.d.ts.map +1 -1
  106. package/dist/src/types.d.ts +194 -1
  107. package/dist/src/types.d.ts.map +1 -1
  108. package/dist/src/utils/logger.spec.d.ts +5 -20
  109. package/dist/src/utils/logger.spec.d.ts.map +1 -1
  110. package/dist/src/utils.d.ts +16 -3
  111. package/dist/src/utils.d.ts.map +1 -1
  112. package/dist/tsembed-react.es.js +282 -74
  113. package/dist/tsembed-react.js +281 -73
  114. package/dist/tsembed.es.js +282 -74
  115. package/dist/tsembed.js +281 -73
  116. package/dist/visual-embed-sdk-react-full.d.ts +185 -3
  117. package/dist/visual-embed-sdk-react.d.ts +184 -2
  118. package/dist/visual-embed-sdk.d.ts +185 -3
  119. package/lib/package.json +6 -5
  120. package/lib/src/api-intercept.d.ts.map +1 -1
  121. package/lib/src/api-intercept.js +9 -4
  122. package/lib/src/api-intercept.js.map +1 -1
  123. package/lib/src/api-intercept.spec.js +20 -4
  124. package/lib/src/api-intercept.spec.js.map +1 -1
  125. package/lib/src/auth.spec.js +43 -42
  126. package/lib/src/auth.spec.js.map +1 -1
  127. package/lib/src/authToken.spec.js +3 -3
  128. package/lib/src/authToken.spec.js.map +1 -1
  129. package/lib/src/embed/app.d.ts +17 -0
  130. package/lib/src/embed/app.d.ts.map +1 -1
  131. package/lib/src/embed/app.js +10 -6
  132. package/lib/src/embed/app.js.map +1 -1
  133. package/lib/src/embed/app.spec.js +96 -6
  134. package/lib/src/embed/app.spec.js.map +1 -1
  135. package/lib/src/embed/base.d.ts +1 -1
  136. package/lib/src/embed/base.d.ts.map +1 -1
  137. package/lib/src/embed/base.js +5 -1
  138. package/lib/src/embed/base.js.map +1 -1
  139. package/lib/src/embed/base.spec.js +72 -16
  140. package/lib/src/embed/base.spec.js.map +1 -1
  141. package/lib/src/embed/bodyless-conversation.spec.js +2 -2
  142. package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
  143. package/lib/src/embed/conversation.d.ts.map +1 -1
  144. package/lib/src/embed/conversation.js +7 -2
  145. package/lib/src/embed/conversation.js.map +1 -1
  146. package/lib/src/embed/conversation.spec.js +9 -4
  147. package/lib/src/embed/conversation.spec.js.map +1 -1
  148. package/lib/src/embed/embed.spec.js +103 -4
  149. package/lib/src/embed/embed.spec.js.map +1 -1
  150. package/lib/src/embed/events.spec.js +2 -2
  151. package/lib/src/embed/events.spec.js.map +1 -1
  152. package/lib/src/embed/hostEventClient/host-event-client.spec.js +2 -2
  153. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  154. package/lib/src/embed/liveboard.d.ts +18 -0
  155. package/lib/src/embed/liveboard.d.ts.map +1 -1
  156. package/lib/src/embed/liveboard.js +15 -8
  157. package/lib/src/embed/liveboard.js.map +1 -1
  158. package/lib/src/embed/liveboard.spec.js +114 -26
  159. package/lib/src/embed/liveboard.spec.js.map +1 -1
  160. package/lib/src/embed/pinboard.spec.js +1 -1
  161. package/lib/src/embed/pinboard.spec.js.map +1 -1
  162. package/lib/src/embed/sage.spec.js +2 -2
  163. package/lib/src/embed/sage.spec.js.map +1 -1
  164. package/lib/src/embed/search.spec.js +118 -2
  165. package/lib/src/embed/search.spec.js.map +1 -1
  166. package/lib/src/embed/ts-embed-trigger.spec.js +2 -3
  167. package/lib/src/embed/ts-embed-trigger.spec.js.map +1 -1
  168. package/lib/src/embed/ts-embed.d.ts +3 -2
  169. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  170. package/lib/src/embed/ts-embed.js +52 -18
  171. package/lib/src/embed/ts-embed.js.map +1 -1
  172. package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
  173. package/lib/src/embed/ts-embed.spec.js +336 -72
  174. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  175. package/lib/src/errors.d.ts +8 -0
  176. package/lib/src/errors.d.ts.map +1 -1
  177. package/lib/src/errors.js +8 -0
  178. package/lib/src/errors.js.map +1 -1
  179. package/lib/src/mixpanel-service.spec.js +1 -1
  180. package/lib/src/mixpanel-service.spec.js.map +1 -1
  181. package/lib/src/react/index.spec.js +3 -4
  182. package/lib/src/react/index.spec.js.map +1 -1
  183. package/lib/src/test/test-utils.js +1 -1
  184. package/lib/src/test/test-utils.js.map +1 -1
  185. package/lib/src/types.d.ts +194 -1
  186. package/lib/src/types.d.ts.map +1 -1
  187. package/lib/src/types.js +93 -1
  188. package/lib/src/types.js.map +1 -1
  189. package/lib/src/utils/authService/authService.spec.js +8 -8
  190. package/lib/src/utils/authService/authService.spec.js.map +1 -1
  191. package/lib/src/utils/authService/tokenizedAuthService.spec.js.map +1 -1
  192. package/lib/src/utils/graphql/answerService/answerService.spec.js +1 -1
  193. package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
  194. package/lib/src/utils/graphql/graphql-request.spec.js +1 -1
  195. package/lib/src/utils/graphql/graphql-request.spec.js.map +1 -1
  196. package/lib/src/utils/graphql/sourceService.spec.js +1 -1
  197. package/lib/src/utils/graphql/sourceService.spec.js.map +1 -1
  198. package/lib/src/utils/logger.spec.d.ts +5 -20
  199. package/lib/src/utils/logger.spec.d.ts.map +1 -1
  200. package/lib/src/utils/processData.spec.js +17 -17
  201. package/lib/src/utils/processData.spec.js.map +1 -1
  202. package/lib/src/utils/processTrigger.spec.js +8 -8
  203. package/lib/src/utils/processTrigger.spec.js.map +1 -1
  204. package/lib/src/utils.d.ts +16 -3
  205. package/lib/src/utils.d.ts.map +1 -1
  206. package/lib/src/utils.js +57 -4
  207. package/lib/src/utils.js.map +1 -1
  208. package/lib/src/utils.spec.js +73 -11
  209. package/lib/src/utils.spec.js.map +1 -1
  210. package/package.json +6 -5
  211. package/src/api-intercept.spec.ts +23 -10
  212. package/src/api-intercept.ts +9 -4
  213. package/src/auth.spec.ts +53 -51
  214. package/src/authToken.spec.ts +3 -3
  215. package/src/embed/app.spec.ts +128 -7
  216. package/src/embed/app.ts +30 -4
  217. package/src/embed/base.spec.ts +95 -21
  218. package/src/embed/base.ts +5 -2
  219. package/src/embed/bodyless-conversation.spec.ts +2 -2
  220. package/src/embed/conversation.spec.ts +9 -4
  221. package/src/embed/conversation.ts +7 -2
  222. package/src/embed/embed.spec.ts +122 -2
  223. package/src/embed/events.spec.ts +2 -2
  224. package/src/embed/hostEventClient/host-event-client.spec.ts +2 -2
  225. package/src/embed/liveboard.spec.ts +137 -29
  226. package/src/embed/liveboard.ts +36 -6
  227. package/src/embed/pinboard.spec.ts +1 -1
  228. package/src/embed/sage.spec.ts +2 -2
  229. package/src/embed/search.spec.ts +133 -2
  230. package/src/embed/ts-embed-trigger.spec.ts +2 -3
  231. package/src/embed/ts-embed.spec.ts +424 -91
  232. package/src/embed/ts-embed.ts +56 -19
  233. package/src/errors.ts +8 -0
  234. package/src/mixpanel-service.spec.ts +1 -1
  235. package/src/react/index.spec.tsx +4 -5
  236. package/src/test/test-utils.ts +2 -2
  237. package/src/types.ts +206 -1
  238. package/src/utils/authService/authService.spec.ts +17 -17
  239. package/src/utils/authService/tokenizedAuthService.spec.ts +4 -4
  240. package/src/utils/graphql/answerService/answerService.spec.ts +3 -3
  241. package/src/utils/graphql/graphql-request.spec.ts +2 -2
  242. package/src/utils/graphql/sourceService.spec.ts +1 -1
  243. package/src/utils/processData.spec.ts +26 -26
  244. package/src/utils/processTrigger.spec.ts +8 -8
  245. package/src/utils.spec.ts +100 -11
  246. package/src/utils.ts +59 -7
@@ -28,8 +28,8 @@ beforeAll(() => {
28
28
  thoughtSpotHost,
29
29
  authType: AuthType.None,
30
30
  });
31
- spyOn(window, 'alert');
32
- jest.spyOn(authInstance, 'postLoginService').mockResolvedValue(true);
31
+ jest.spyOn(window, 'alert');
32
+ jest.spyOn(authInstance, 'postLoginService').mockImplementation(() => Promise.resolve(true as any));
33
33
  });
34
34
 
35
35
  describe('Sage embed tests', () => {
@@ -40,8 +40,8 @@ beforeAll(() => {
40
40
  thoughtSpotHost,
41
41
  authType: AuthType.None,
42
42
  });
43
- jest.spyOn(authInstance, 'postLoginService').mockImplementation(() => Promise.resolve({}));
44
- spyOn(window, 'alert');
43
+ jest.spyOn(authInstance, 'postLoginService').mockImplementation(() => Promise.resolve(undefined));
44
+ jest.spyOn(window, 'alert').mockImplementation(() => {});
45
45
  });
46
46
 
47
47
  describe('Search embed tests', () => {
@@ -666,3 +666,134 @@ describe('Search embed tests', () => {
666
666
  expect(getIFrameSrc().includes('executeSearch')).toBeFalsy();
667
667
  });
668
668
  });
669
+
670
+ // Add these tests to src/embed/search.spec.ts
671
+
672
+ // ============================================
673
+ // SearchEmbed tests for uncovered lines 427, 430
674
+ // ============================================
675
+
676
+ // TEST 1: hideResults parameter (line 427)
677
+ test('should pass hideResult parameter when hideResults is true', async () => {
678
+ const searchEmbed = new SearchEmbed(getRootEl(), {
679
+ ...defaultViewConfig,
680
+ hideResults: true,
681
+ });
682
+ searchEmbed.render();
683
+ await executeAfterWait(() => {
684
+ const iframeSrc = getIFrameSrc();
685
+ expect(iframeSrc).toContain('hideResult=true');
686
+ });
687
+ });
688
+
689
+ // TEST 2: forceTable parameter (line 430)
690
+ test('should pass forceTable parameter when forceTable is true', async () => {
691
+ const searchEmbed = new SearchEmbed(getRootEl(), {
692
+ ...defaultViewConfig,
693
+ forceTable: true,
694
+ });
695
+ searchEmbed.render();
696
+ await executeAfterWait(() => {
697
+ const iframeSrc = getIFrameSrc();
698
+ expect(iframeSrc).toContain('forceTable=true');
699
+ });
700
+ });
701
+
702
+ describe('SearchBarEmbed tests', () => {
703
+ test('should pass dataSources parameter when dataSources array is provided', async () => {
704
+ const searchBarEmbed = new SearchBarEmbed(getRootEl() as any, {
705
+ ...defaultViewConfig,
706
+ dataSources: ['source-1', 'source-2'],
707
+ });
708
+ searchBarEmbed.render();
709
+ await executeAfterWait(() => {
710
+ const iframeSrc = getIFrameSrc();
711
+ expect(iframeSrc).toContain('dataSources');
712
+ expect(iframeSrc).toContain('source-1');
713
+ });
714
+ });
715
+
716
+ test('should pass dataSource parameter when single dataSource is provided', async () => {
717
+ const searchBarEmbed = new SearchBarEmbed(getRootEl() as any, {
718
+ ...defaultViewConfig,
719
+ dataSource: 'single-source-id',
720
+ });
721
+ searchBarEmbed.render();
722
+ await executeAfterWait(() => {
723
+ const iframeSrc = getIFrameSrc();
724
+ expect(iframeSrc).toContain('dataSources');
725
+ expect(iframeSrc).toContain('single-source-id');
726
+ });
727
+ });
728
+
729
+ test('should pass searchTokenString and executeSearch when searchOptions provided', async () => {
730
+ const searchBarEmbed = new SearchBarEmbed(getRootEl() as any, {
731
+ ...defaultViewConfig,
732
+ searchOptions: {
733
+ searchTokenString: '[revenue][region]',
734
+ executeSearch: true,
735
+ },
736
+ });
737
+ searchBarEmbed.render();
738
+ await executeAfterWait(() => {
739
+ const iframeSrc = getIFrameSrc();
740
+ expect(iframeSrc).toContain('searchTokenString');
741
+ expect(iframeSrc).toContain('executeSearch=true');
742
+ });
743
+ });
744
+
745
+ test('should set useLastSelectedSources to false when dataSource is provided', async () => {
746
+ const searchBarEmbed = new SearchBarEmbed(getRootEl() as any, {
747
+ ...defaultViewConfig,
748
+ dataSource: 'my-source',
749
+ useLastSelectedSources: true, // This should be overridden to false
750
+ });
751
+ searchBarEmbed.render();
752
+ await executeAfterWait(() => {
753
+ const iframeSrc = getIFrameSrc();
754
+ expect(iframeSrc).toContain('useLastSelectedSources=false');
755
+ });
756
+ });
757
+
758
+ test('should include searchOptions in APP_INIT when excludeSearchTokenStringFromURL is true', async () => {
759
+ const searchOptions = {
760
+ searchTokenString: '[quantity][product]',
761
+ executeSearch: true,
762
+ };
763
+ const searchBarEmbed = new SearchBarEmbed(getRootEl() as any, {
764
+ ...defaultViewConfig,
765
+ searchOptions,
766
+ excludeSearchTokenStringFromURL: true,
767
+ });
768
+
769
+ const mockEmbedEventPayload = {
770
+ type: EmbedEvent.APP_INIT,
771
+ data: {},
772
+ };
773
+
774
+ searchBarEmbed.render();
775
+
776
+ const mockPort: any = {
777
+ postMessage: jest.fn(),
778
+ };
779
+
780
+ await executeAfterWait(() => {
781
+ const iframe = getIFrameEl();
782
+ postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
783
+ });
784
+
785
+ expect(getIFrameSrc().includes('searchTokenString')).toBeFalsy();
786
+
787
+ await executeAfterWait(() => {
788
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
789
+ type: EmbedEvent.APP_INIT,
790
+ data: expect.objectContaining({
791
+ searchOptions: {
792
+ searchTokenString: '[quantity][product]',
793
+ executeSearch: true,
794
+ },
795
+ }),
796
+ });
797
+ });
798
+ });
799
+ });
@@ -13,9 +13,9 @@ import * as authInstance from '../auth';
13
13
  describe('Trigger', () => {
14
14
  beforeEach(() => {
15
15
  document.body.innerHTML = getDocumentBody();
16
- jest.spyOn(authInstance, 'postLoginService').mockResolvedValue(true);
16
+ jest.spyOn(authInstance, 'postLoginService').mockImplementation(() => Promise.resolve(true as any));
17
17
  });
18
- test('should trigger the event', async (done) => {
18
+ test('should trigger the event', async () => {
19
19
  init({
20
20
  thoughtSpotHost: 'https://tshost',
21
21
  authType: AuthType.None,
@@ -36,7 +36,6 @@ describe('Trigger', () => {
36
36
  type: HostEvent.DownloadAsCsv,
37
37
  data: { vizId: 'testId' },
38
38
  }), 'https://tshost', expect.anything());
39
- done();
40
39
  });
41
40
  });
42
41
  });