@thoughtspot/visual-embed-sdk 1.45.0 → 1.45.2

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 (131) hide show
  1. package/cjs/package.json +2 -2
  2. package/cjs/src/authToken.d.ts +1 -1
  3. package/cjs/src/authToken.d.ts.map +1 -1
  4. package/cjs/src/authToken.js +2 -2
  5. package/cjs/src/authToken.js.map +1 -1
  6. package/cjs/src/authToken.spec.js +71 -0
  7. package/cjs/src/authToken.spec.js.map +1 -1
  8. package/cjs/src/embed/hostEventClient/contracts.d.ts +3 -3
  9. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  10. package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
  11. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +8 -8
  12. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  13. package/cjs/src/embed/hostEventClient/host-event-client.js +18 -18
  14. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
  15. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +7 -7
  16. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  17. package/cjs/src/embed/liveboard.d.ts +2 -2
  18. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  19. package/cjs/src/embed/liveboard.js +2 -2
  20. package/cjs/src/embed/liveboard.js.map +1 -1
  21. package/cjs/src/embed/liveboard.spec.js +1 -1
  22. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  23. package/cjs/src/embed/ts-embed.d.ts +23 -2
  24. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  25. package/cjs/src/embed/ts-embed.js +64 -22
  26. package/cjs/src/embed/ts-embed.js.map +1 -1
  27. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
  28. package/cjs/src/embed/ts-embed.spec.js +138 -19
  29. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  30. package/cjs/src/index.d.ts +2 -2
  31. package/cjs/src/index.d.ts.map +1 -1
  32. package/cjs/src/index.js +3 -2
  33. package/cjs/src/index.js.map +1 -1
  34. package/cjs/src/types.d.ts +164 -2
  35. package/cjs/src/types.d.ts.map +1 -1
  36. package/cjs/src/types.js +43 -1
  37. package/cjs/src/types.js.map +1 -1
  38. package/cjs/src/utils/processTrigger.d.ts +3 -2
  39. package/cjs/src/utils/processTrigger.d.ts.map +1 -1
  40. package/cjs/src/utils/processTrigger.js +4 -2
  41. package/cjs/src/utils/processTrigger.js.map +1 -1
  42. package/cjs/src/utils.d.ts +5 -1
  43. package/cjs/src/utils.d.ts.map +1 -1
  44. package/cjs/src/utils.js +8 -1
  45. package/cjs/src/utils.js.map +1 -1
  46. package/dist/{index-Dk-SLdNk.js → index-BdkKLLo1.js} +1 -1
  47. package/dist/src/authToken.d.ts +1 -1
  48. package/dist/src/authToken.d.ts.map +1 -1
  49. package/dist/src/embed/hostEventClient/contracts.d.ts +3 -3
  50. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  51. package/dist/src/embed/hostEventClient/host-event-client.d.ts +8 -8
  52. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  53. package/dist/src/embed/liveboard.d.ts +2 -2
  54. package/dist/src/embed/liveboard.d.ts.map +1 -1
  55. package/dist/src/embed/ts-embed.d.ts +23 -2
  56. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  57. package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
  58. package/dist/src/index.d.ts +2 -2
  59. package/dist/src/index.d.ts.map +1 -1
  60. package/dist/src/types.d.ts +164 -2
  61. package/dist/src/types.d.ts.map +1 -1
  62. package/dist/src/utils/processTrigger.d.ts +3 -2
  63. package/dist/src/utils/processTrigger.d.ts.map +1 -1
  64. package/dist/src/utils.d.ts +5 -1
  65. package/dist/src/utils.d.ts.map +1 -1
  66. package/dist/tsembed-react.es.js +140 -49
  67. package/dist/tsembed-react.js +139 -48
  68. package/dist/tsembed.es.js +155 -64
  69. package/dist/tsembed.js +29640 -29549
  70. package/dist/visual-embed-sdk-react-full.d.ts +196 -13
  71. package/dist/visual-embed-sdk-react.d.ts +196 -13
  72. package/dist/visual-embed-sdk.d.ts +196 -13
  73. package/lib/package.json +2 -2
  74. package/lib/src/authToken.d.ts +1 -1
  75. package/lib/src/authToken.d.ts.map +1 -1
  76. package/lib/src/authToken.js +2 -2
  77. package/lib/src/authToken.js.map +1 -1
  78. package/lib/src/authToken.spec.js +72 -1
  79. package/lib/src/authToken.spec.js.map +1 -1
  80. package/lib/src/embed/hostEventClient/contracts.d.ts +3 -3
  81. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  82. package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
  83. package/lib/src/embed/hostEventClient/host-event-client.d.ts +8 -8
  84. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  85. package/lib/src/embed/hostEventClient/host-event-client.js +18 -18
  86. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  87. package/lib/src/embed/hostEventClient/host-event-client.spec.js +7 -7
  88. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  89. package/lib/src/embed/liveboard.d.ts +2 -2
  90. package/lib/src/embed/liveboard.d.ts.map +1 -1
  91. package/lib/src/embed/liveboard.js +2 -2
  92. package/lib/src/embed/liveboard.js.map +1 -1
  93. package/lib/src/embed/liveboard.spec.js +1 -1
  94. package/lib/src/embed/liveboard.spec.js.map +1 -1
  95. package/lib/src/embed/ts-embed.d.ts +23 -2
  96. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  97. package/lib/src/embed/ts-embed.js +64 -22
  98. package/lib/src/embed/ts-embed.js.map +1 -1
  99. package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
  100. package/lib/src/embed/ts-embed.spec.js +139 -20
  101. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  102. package/lib/src/index.d.ts +2 -2
  103. package/lib/src/index.d.ts.map +1 -1
  104. package/lib/src/index.js +2 -2
  105. package/lib/src/index.js.map +1 -1
  106. package/lib/src/types.d.ts +164 -2
  107. package/lib/src/types.d.ts.map +1 -1
  108. package/lib/src/types.js +42 -0
  109. package/lib/src/types.js.map +1 -1
  110. package/lib/src/utils/processTrigger.d.ts +3 -2
  111. package/lib/src/utils/processTrigger.d.ts.map +1 -1
  112. package/lib/src/utils/processTrigger.js +4 -2
  113. package/lib/src/utils/processTrigger.js.map +1 -1
  114. package/lib/src/utils.d.ts +5 -1
  115. package/lib/src/utils.d.ts.map +1 -1
  116. package/lib/src/utils.js +6 -0
  117. package/lib/src/utils.js.map +1 -1
  118. package/package.json +2 -2
  119. package/src/authToken.spec.ts +91 -2
  120. package/src/authToken.ts +2 -2
  121. package/src/embed/hostEventClient/contracts.ts +4 -4
  122. package/src/embed/hostEventClient/host-event-client.spec.ts +7 -1
  123. package/src/embed/hostEventClient/host-event-client.ts +22 -11
  124. package/src/embed/liveboard.spec.ts +1 -1
  125. package/src/embed/liveboard.ts +5 -3
  126. package/src/embed/ts-embed.spec.ts +184 -8
  127. package/src/embed/ts-embed.ts +81 -24
  128. package/src/index.ts +2 -0
  129. package/src/types.ts +171 -0
  130. package/src/utils/processTrigger.ts +6 -3
  131. package/src/utils.ts +8 -0
package/src/types.ts CHANGED
@@ -1120,6 +1120,47 @@ export interface BaseViewConfig extends ApiInterceptFlags {
1120
1120
  * ```
1121
1121
  */
1122
1122
  customActions?: CustomAction[];
1123
+
1124
+
1125
+ /**
1126
+ * Refresh the auth token when the token is near expiry.
1127
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1128
+ * @example
1129
+ * ```js
1130
+ * const embed = new AppEmbed('#tsEmbed', {
1131
+ * ... // other embed view config
1132
+ * refreshAuthTokenOnNearExpiry: true,
1133
+ * })
1134
+ * ```
1135
+ */
1136
+ refreshAuthTokenOnNearExpiry?: boolean;
1137
+ /**
1138
+ * This flag skips payload validation so events can be processed even if the payload is old, incomplete, or from a trusted system.
1139
+ * @default false
1140
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1141
+ * @example
1142
+ * ```js
1143
+ * const embed = new AppEmbed('#tsEmbed', {
1144
+ * ... // other embed view config
1145
+ * shouldBypassPayloadValidation:true,
1146
+ * })
1147
+ * ```
1148
+ */
1149
+ shouldBypassPayloadValidation?: boolean;
1150
+
1151
+ /**
1152
+ * Flag to use host events v2. This is used to enable the new host events v2 API.
1153
+ * @default false
1154
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1155
+ * @example
1156
+ * ```js
1157
+ * const embed = new AppEmbed('#tsEmbed', {
1158
+ * ... // other embed view config
1159
+ * useHostEventsV2:true,
1160
+ * })
1161
+ * ```
1162
+ */
1163
+ useHostEventsV2?: boolean;
1123
1164
  }
1124
1165
 
1125
1166
  /**
@@ -3162,6 +3203,19 @@ export enum EmbedEvent {
3162
3203
  * @version SDK: 1.43.0 | ThoughtSpot: 10.15.0.cl
3163
3204
  */
3164
3205
  ApiIntercept = 'ApiIntercept',
3206
+
3207
+ /**
3208
+ * @hidden
3209
+ * Emitted when the auth token is about to get expired and needs to be refreshed.
3210
+ * @example
3211
+ * ```js
3212
+ * embed.on(EmbedEvent.RefreshAuthToken, (payload) => {
3213
+ * console.log('payload', payload);
3214
+ * })
3215
+ * ```
3216
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
3217
+ */
3218
+ RefreshAuthToken = 'RefreshAuthToken',
3165
3219
  }
3166
3220
 
3167
3221
  /**
@@ -4547,6 +4601,18 @@ export enum HostEvent {
4547
4601
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
4548
4602
  */
4549
4603
  StartNewSpotterConversation = 'StartNewSpotterConversation',
4604
+
4605
+ /**
4606
+ * @hidden
4607
+ * Get the current context of the embedded page.
4608
+ *
4609
+ * @example
4610
+ * ```js
4611
+ * const context = await liveboardEmbed.trigger(HostEvent.GetPageContext);
4612
+ * ```
4613
+ * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
4614
+ */
4615
+ GetPageContext = 'GetPageContext',
4550
4616
  }
4551
4617
 
4552
4618
  /**
@@ -6507,6 +6573,26 @@ export interface EmbedErrorDetailsEvent {
6507
6573
  /** Additional context-specific for backward compatibility */
6508
6574
  [key: string]: any;
6509
6575
  }
6576
+
6577
+ export enum ContextType {
6578
+ /**
6579
+ * Search answer context for search page or edit viz dialog on liveboard page.
6580
+ */
6581
+ Search = 'search-answer',
6582
+ /**
6583
+ * Liveboard context for liveboard page.
6584
+ */
6585
+ Liveboard = 'liveboard',
6586
+ /**
6587
+ * Answer context for explore modal/page on liveboard page.
6588
+ */
6589
+ Answer = 'answer',
6590
+ /**
6591
+ * Spotter context for spotter modal/page.
6592
+ */
6593
+ Spotter = 'spotter',
6594
+ }
6595
+
6510
6596
  export interface DefaultAppInitData {
6511
6597
  customisations: CustomisationsInterface;
6512
6598
  authToken: string;
@@ -6584,3 +6670,88 @@ export type ApiInterceptFlags = {
6584
6670
  */
6585
6671
  interceptTimeout?: number;
6586
6672
  };
6673
+
6674
+ /**
6675
+ * Object IDs for the embedded component.
6676
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
6677
+ */
6678
+ export interface ObjectIds {
6679
+ /**
6680
+ * Liveboard ID.
6681
+ */
6682
+ liveboardId?: string;
6683
+ /**
6684
+ * Answer ID.
6685
+ */
6686
+ answerId?: string;
6687
+ /**
6688
+ * Viz IDs.
6689
+ */
6690
+ vizIds?: string[];
6691
+ /**
6692
+ * Data model IDs.
6693
+ */
6694
+ dataModelIds?: string[];
6695
+ /**
6696
+ * Modal title.
6697
+ */
6698
+ modalTitle?: string;
6699
+ }
6700
+
6701
+ /**
6702
+ * Context object for the embedded component.
6703
+ * @example
6704
+ * ```js
6705
+ * const context = await embed.getCurrentContext();
6706
+ * console.log(context);
6707
+ * {
6708
+ * stack: [
6709
+ * {
6710
+ * name: 'Liveboard',
6711
+ * type: ContextType.Liveboard,
6712
+ * objectIds: {
6713
+ * liveboardId: '123',
6714
+ * },
6715
+ * },
6716
+ * ],
6717
+ * currentContext: {
6718
+ * name: 'Liveboard',
6719
+ * type: ContextType.Liveboard,
6720
+ * objectIds: {
6721
+ * liveboardId: '123',
6722
+ * },
6723
+ * },
6724
+ * }
6725
+ * ```
6726
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
6727
+ */
6728
+ export interface ContextObject {
6729
+ /**
6730
+ * Stack of context objects.
6731
+ */
6732
+ stack: Array<{
6733
+ /**
6734
+ * Name of the context object.
6735
+ */
6736
+ name: string;
6737
+ /**
6738
+ * Type of the context object.
6739
+ */
6740
+ type: ContextType;
6741
+ /**
6742
+ * Object IDs of the context object.
6743
+ */
6744
+ objectIds: ObjectIds;
6745
+ }>
6746
+ /**
6747
+ * Current context object.
6748
+ */
6749
+ currentContext: {
6750
+ /**
6751
+ * Name of the current context object.
6752
+ */
6753
+ name: string;
6754
+ type: ContextType;
6755
+ objectIds: ObjectIds;
6756
+ }
6757
+ }
@@ -1,5 +1,5 @@
1
1
  import { ERROR_MESSAGE } from '../errors';
2
- import { HostEvent, MessagePayload } from '../types';
2
+ import { ContextType, HostEvent, MessagePayload } from '../types';
3
3
  import { logger } from '../utils/logger';
4
4
  import { handlePresentEvent } from '../utils';
5
5
  import { getEmbedConfig } from '../embed/embedConfig';
@@ -22,12 +22,13 @@ export const reload = (iFrame: HTMLIFrameElement) => {
22
22
  * @param message
23
23
  * @param message.type
24
24
  * @param message.data
25
+ * @param message.context
25
26
  * @param thoughtSpotHost
26
27
  * @param channel
27
28
  */
28
29
  function postIframeMessage(
29
30
  iFrame: HTMLIFrameElement,
30
- message: { type: HostEvent; data: any },
31
+ message: { type: HostEvent; data: any, context?: any },
31
32
  thoughtSpotHost: string,
32
33
  channel?: MessageChannel,
33
34
  ) {
@@ -42,12 +43,14 @@ export const TRIGGER_TIMEOUT = 30000;
42
43
  * @param messageType
43
44
  * @param thoughtSpotHost
44
45
  * @param data
46
+ * @param context
45
47
  */
46
48
  export function processTrigger(
47
49
  iFrame: HTMLIFrameElement,
48
50
  messageType: HostEvent,
49
51
  thoughtSpotHost: string,
50
52
  data: any,
53
+ context?: ContextType,
51
54
  ): Promise<any> {
52
55
  return new Promise<any>((res, rej) => {
53
56
  if (messageType === HostEvent.Reload) {
@@ -83,6 +86,6 @@ export function processTrigger(
83
86
  res(new Error(ERROR_MESSAGE.TRIGGER_TIMED_OUT));
84
87
  }, TRIGGER_TIMEOUT);
85
88
 
86
- return postIframeMessage(iFrame, { type: messageType, data }, thoughtSpotHost, channel);
89
+ return postIframeMessage(iFrame, { type: messageType, data, context }, thoughtSpotHost, channel);
87
90
  });
88
91
  }
package/src/utils.ts CHANGED
@@ -15,6 +15,7 @@ import {
15
15
  DOMSelector,
16
16
  RuntimeParameter,
17
17
  AllEmbedViewConfig,
18
+ BaseViewConfig,
18
19
  } from './types';
19
20
  import { logger } from './utils/logger';
20
21
  import { ERROR_MESSAGE } from './errors';
@@ -560,6 +561,13 @@ export const formatTemplate = (template: string, values: Record<string, any>): s
560
561
  });
561
562
  };
562
563
 
564
+ export const getHostEventsConfig = (viewConfig: BaseViewConfig) => {
565
+ return {
566
+ shouldBypassPayloadValidation: viewConfig.shouldBypassPayloadValidation,
567
+ useHostEventsV2: viewConfig.useHostEventsV2,
568
+ };
569
+ }
570
+
563
571
  /**
564
572
  * Check if the window is undefined
565
573
  * If the window is undefined, it means the code is running in a SSR environment.