@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
@@ -1925,6 +1925,44 @@ export interface BaseViewConfig extends ApiInterceptFlags {
1925
1925
  * ```
1926
1926
  */
1927
1927
  customActions?: CustomAction[];
1928
+ /**
1929
+ * Refresh the auth token when the token is near expiry.
1930
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1931
+ * @example
1932
+ * ```js
1933
+ * const embed = new AppEmbed('#tsEmbed', {
1934
+ * ... // other embed view config
1935
+ * refreshAuthTokenOnNearExpiry: true,
1936
+ * })
1937
+ * ```
1938
+ */
1939
+ refreshAuthTokenOnNearExpiry?: boolean;
1940
+ /**
1941
+ * This flag skips payload validation so events can be processed even if the payload is old, incomplete, or from a trusted system.
1942
+ * @default false
1943
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1944
+ * @example
1945
+ * ```js
1946
+ * const embed = new AppEmbed('#tsEmbed', {
1947
+ * ... // other embed view config
1948
+ * shouldBypassPayloadValidation:true,
1949
+ * })
1950
+ * ```
1951
+ */
1952
+ shouldBypassPayloadValidation?: boolean;
1953
+ /**
1954
+ * Flag to use host events v2. This is used to enable the new host events v2 API.
1955
+ * @default false
1956
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1957
+ * @example
1958
+ * ```js
1959
+ * const embed = new AppEmbed('#tsEmbed', {
1960
+ * ... // other embed view config
1961
+ * useHostEventsV2:true,
1962
+ * })
1963
+ * ```
1964
+ */
1965
+ useHostEventsV2?: boolean;
1928
1966
  }
1929
1967
  /**
1930
1968
  * The configuration object for Home page embeds configs.
@@ -3909,7 +3947,19 @@ export declare enum EmbedEvent {
3909
3947
  * ```
3910
3948
  * @version SDK: 1.43.0 | ThoughtSpot: 10.15.0.cl
3911
3949
  */
3912
- ApiIntercept = "ApiIntercept"
3950
+ ApiIntercept = "ApiIntercept",
3951
+ /**
3952
+ * @hidden
3953
+ * Emitted when the auth token is about to get expired and needs to be refreshed.
3954
+ * @example
3955
+ * ```js
3956
+ * embed.on(EmbedEvent.RefreshAuthToken, (payload) => {
3957
+ * console.log('payload', payload);
3958
+ * })
3959
+ * ```
3960
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
3961
+ */
3962
+ RefreshAuthToken = "RefreshAuthToken"
3913
3963
  }
3914
3964
  /**
3915
3965
  * Event types that can be triggered by the host application
@@ -5291,7 +5341,18 @@ export declare enum HostEvent {
5291
5341
  * ```
5292
5342
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
5293
5343
  */
5294
- StartNewSpotterConversation = "StartNewSpotterConversation"
5344
+ StartNewSpotterConversation = "StartNewSpotterConversation",
5345
+ /**
5346
+ * @hidden
5347
+ * Get the current context of the embedded page.
5348
+ *
5349
+ * @example
5350
+ * ```js
5351
+ * const context = await liveboardEmbed.trigger(HostEvent.GetPageContext);
5352
+ * ```
5353
+ * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
5354
+ */
5355
+ GetPageContext = "GetPageContext"
5295
5356
  }
5296
5357
  /**
5297
5358
  * The different visual modes that the data sources panel within
@@ -6993,6 +7054,24 @@ export interface EmbedErrorDetailsEvent {
6993
7054
  /** Additional context-specific for backward compatibility */
6994
7055
  [key: string]: any;
6995
7056
  }
7057
+ declare enum ContextType {
7058
+ /**
7059
+ * Search answer context for search page or edit viz dialog on liveboard page.
7060
+ */
7061
+ Search = "search-answer",
7062
+ /**
7063
+ * Liveboard context for liveboard page.
7064
+ */
7065
+ Liveboard = "liveboard",
7066
+ /**
7067
+ * Answer context for explore modal/page on liveboard page.
7068
+ */
7069
+ Answer = "answer",
7070
+ /**
7071
+ * Spotter context for spotter modal/page.
7072
+ */
7073
+ Spotter = "spotter"
7074
+ }
6996
7075
  export interface DefaultAppInitData {
6997
7076
  customisations: CustomisationsInterface;
6998
7077
  authToken: string;
@@ -7068,6 +7147,89 @@ export type ApiInterceptFlags = {
7068
7147
  */
7069
7148
  interceptTimeout?: number;
7070
7149
  };
7150
+ /**
7151
+ * Object IDs for the embedded component.
7152
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
7153
+ */
7154
+ export interface ObjectIds {
7155
+ /**
7156
+ * Liveboard ID.
7157
+ */
7158
+ liveboardId?: string;
7159
+ /**
7160
+ * Answer ID.
7161
+ */
7162
+ answerId?: string;
7163
+ /**
7164
+ * Viz IDs.
7165
+ */
7166
+ vizIds?: string[];
7167
+ /**
7168
+ * Data model IDs.
7169
+ */
7170
+ dataModelIds?: string[];
7171
+ /**
7172
+ * Modal title.
7173
+ */
7174
+ modalTitle?: string;
7175
+ }
7176
+ /**
7177
+ * Context object for the embedded component.
7178
+ * @example
7179
+ * ```js
7180
+ * const context = await embed.getCurrentContext();
7181
+ * console.log(context);
7182
+ * {
7183
+ * stack: [
7184
+ * {
7185
+ * name: 'Liveboard',
7186
+ * type: ContextType.Liveboard,
7187
+ * objectIds: {
7188
+ * liveboardId: '123',
7189
+ * },
7190
+ * },
7191
+ * ],
7192
+ * currentContext: {
7193
+ * name: 'Liveboard',
7194
+ * type: ContextType.Liveboard,
7195
+ * objectIds: {
7196
+ * liveboardId: '123',
7197
+ * },
7198
+ * },
7199
+ * }
7200
+ * ```
7201
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
7202
+ */
7203
+ export interface ContextObject {
7204
+ /**
7205
+ * Stack of context objects.
7206
+ */
7207
+ stack: Array<{
7208
+ /**
7209
+ * Name of the context object.
7210
+ */
7211
+ name: string;
7212
+ /**
7213
+ * Type of the context object.
7214
+ */
7215
+ type: ContextType;
7216
+ /**
7217
+ * Object IDs of the context object.
7218
+ */
7219
+ objectIds: ObjectIds;
7220
+ }>;
7221
+ /**
7222
+ * Current context object.
7223
+ */
7224
+ currentContext: {
7225
+ /**
7226
+ * Name of the current context object.
7227
+ */
7228
+ name: string;
7229
+ type: ContextType;
7230
+ objectIds: ObjectIds;
7231
+ };
7232
+ }
7071
7233
  /**
7072
7234
  * Enum for auth failure types. This is the parameter passed to the listner
7073
7235
  * of {@link AuthStatus.FAILURE}.
@@ -7254,9 +7416,9 @@ export type EmbedApiHostEventMapping = {
7254
7416
  [HostEvent.SaveAnswer]: UIPassthroughEvent.SaveAnswer;
7255
7417
  };
7256
7418
  export type HostEventRequest<HostEventT extends HostEvent> = HostEventT extends keyof EmbedApiHostEventMapping ? UIPassthroughRequest<EmbedApiHostEventMapping[HostEventT]> : any;
7257
- export type HostEventResponse<HostEventT extends HostEvent> = HostEventT extends keyof EmbedApiHostEventMapping ? UIPassthroughResponse<EmbedApiHostEventMapping[HostEventT]> : any;
7419
+ export type HostEventResponse<HostEventT extends HostEvent, ContextT extends ContextType> = HostEventT extends keyof EmbedApiHostEventMapping ? UIPassthroughResponse<EmbedApiHostEventMapping[HostEventT]> : any;
7258
7420
  export type TriggerPayload<PayloadT, HostEventT extends HostEvent> = PayloadT | HostEventRequest<HostEventT>;
7259
- export type TriggerResponse<PayloadT, HostEventT extends HostEvent> = PayloadT extends HostEventRequest<HostEventT> ? HostEventResponse<HostEventT> : any;
7421
+ export type TriggerResponse<PayloadT, HostEventT extends HostEvent, ContextT extends ContextType> = PayloadT extends HostEventRequest<HostEventT> ? HostEventResponse<HostEventT, ContextT> : any;
7260
7422
  declare class HostEventClient {
7261
7423
  iFrame: HTMLIFrameElement;
7262
7424
  constructor(iFrame?: HTMLIFrameElement);
@@ -7266,18 +7428,18 @@ declare class HostEventClient {
7266
7428
  * @param {any} data Data to send with the host event
7267
7429
  * @returns {Promise<any>} - the response from the process trigger
7268
7430
  */
7269
- protected processTrigger(message: HostEvent, data: any): Promise<any>;
7270
- handleHostEventWithParam<UIPassthroughEventT extends UIPassthroughEvent>(apiName: UIPassthroughEventT, parameters: UIPassthroughRequest<UIPassthroughEventT>): Promise<UIPassthroughResponse<UIPassthroughEventT>>;
7271
- hostEventFallback(hostEvent: HostEvent, data: any): Promise<any>;
7431
+ protected processTrigger(message: HostEvent, data: any, context?: ContextType): Promise<any>;
7432
+ handleHostEventWithParam<UIPassthroughEventT extends UIPassthroughEvent>(apiName: UIPassthroughEventT, parameters: UIPassthroughRequest<UIPassthroughEventT>, context?: ContextType): Promise<UIPassthroughResponse<UIPassthroughEventT>>;
7433
+ hostEventFallback(hostEvent: HostEvent, data: any, context?: ContextType): Promise<any>;
7272
7434
  /**
7273
7435
  * Setter for the iframe element used for host events
7274
7436
  * @param {HTMLIFrameElement} iFrame - the iframe element to set
7275
7437
  */
7276
7438
  setIframeElement(iFrame: HTMLIFrameElement): void;
7277
- triggerUIPassthroughApi<UIPassthroughEventT extends UIPassthroughEvent>(apiName: UIPassthroughEventT, parameters: UIPassthroughRequest<UIPassthroughEventT>): Promise<UIPassthroughArrayResponse<UIPassthroughEventT>>;
7278
- protected handlePinEvent(payload: HostEventRequest<HostEvent.Pin>): Promise<HostEventResponse<HostEvent.Pin>>;
7279
- protected handleSaveAnswerEvent(payload: HostEventRequest<HostEvent.SaveAnswer>): Promise<any>;
7280
- triggerHostEvent<HostEventT extends HostEvent, PayloadT>(hostEvent: HostEventT, payload?: TriggerPayload<PayloadT, HostEventT>): Promise<TriggerResponse<PayloadT, HostEventT>>;
7439
+ triggerUIPassthroughApi<UIPassthroughEventT extends UIPassthroughEvent>(apiName: UIPassthroughEventT, parameters: UIPassthroughRequest<UIPassthroughEventT>, context?: ContextType): Promise<UIPassthroughArrayResponse<UIPassthroughEventT>>;
7440
+ protected handlePinEvent(payload: HostEventRequest<HostEvent.Pin>, context?: ContextType): Promise<HostEventResponse<HostEvent.Pin, ContextType>>;
7441
+ protected handleSaveAnswerEvent(payload: HostEventRequest<HostEvent.SaveAnswer>, context?: ContextType): Promise<any>;
7442
+ triggerHostEvent<HostEventT extends HostEvent, PayloadT, ContextT extends ContextType>(hostEvent: HostEventT, payload?: TriggerPayload<PayloadT, HostEventT>, context?: ContextT): Promise<TriggerResponse<PayloadT, HostEventT, ContextType>>;
7281
7443
  }
7282
7444
  declare class TsEmbed {
7283
7445
  /**
@@ -7424,6 +7586,21 @@ declare class TsEmbed {
7424
7586
  * @param responder
7425
7587
  */
7426
7588
  private appInitCb;
7589
+ /**
7590
+ * Helper method to refresh/update auth token for TrustedAuthTokenCookieless auth type
7591
+ * @param responder - Function to send response back
7592
+ * @param eventType - The embed event type to send
7593
+ * @param forceRefresh - Whether to force refresh the token
7594
+ * @returns Promise that resolves if token was refreshed, rejects otherwise
7595
+ */
7596
+ private refreshAuthTokenForCookieless;
7597
+ private handleAuthFailure;
7598
+ /**
7599
+ * Refresh the auth token if the autoLogin is true and the authType is TrustedAuthTokenCookieless
7600
+ * @param _
7601
+ * @param responder
7602
+ */
7603
+ private tokenRefresh;
7427
7604
  /**
7428
7605
  * Sends updated auth token to the iFrame to avoid user logout
7429
7606
  * @param _
@@ -7599,7 +7776,7 @@ declare class TsEmbed {
7599
7776
  * @param {any} data The payload to send with the message
7600
7777
  * @returns A promise that resolves with the response from the embedded app
7601
7778
  */
7602
- trigger<HostEventT extends HostEvent, PayloadT>(messageType: HostEventT, data?: TriggerPayload<PayloadT, HostEventT>): Promise<TriggerResponse<PayloadT, HostEventT>>;
7779
+ trigger<HostEventT extends HostEvent, PayloadT, ContextT extends ContextType>(messageType: HostEventT, data?: TriggerPayload<PayloadT, HostEventT>, context?: ContextT): Promise<TriggerResponse<PayloadT, HostEventT, ContextT>>;
7603
7780
  /**
7604
7781
  * Triggers an event to the embedded app, skipping the UI flow.
7605
7782
  * @param {UIPassthroughEvent} apiName - The name of the API to be triggered.
@@ -7617,6 +7794,12 @@ declare class TsEmbed {
7617
7794
  render(): Promise<TsEmbed>;
7618
7795
  getIframeSrc(): string;
7619
7796
  protected handleRenderForPrerender(): Promise<TsEmbed>;
7797
+ /**
7798
+ * Get the current context of the embedded TS component.
7799
+ * @returns The current context object containing the page type and object ids.
7800
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
7801
+ */
7802
+ getCurrentContext(): Promise<ContextObject>;
7620
7803
  /**
7621
7804
  * Creates the preRender shell
7622
7805
  * @param showPreRenderByDefault - Show the preRender after render, hidden by default
@@ -9501,7 +9684,7 @@ declare class LiveboardEmbed extends V1Embed {
9501
9684
  * @param {any} data The payload to send with the message
9502
9685
  * @returns A promise that resolves with the response from the embedded app
9503
9686
  */
9504
- trigger<HostEventT extends HostEvent, PayloadT>(messageType: HostEventT, data?: TriggerPayload<PayloadT, HostEventT>): Promise<TriggerResponse<PayloadT, HostEventT>>;
9687
+ trigger<HostEventT extends HostEvent, PayloadT, ContextT extends ContextType>(messageType: HostEventT, data?: TriggerPayload<PayloadT, HostEventT>, context?: ContextT): Promise<TriggerResponse<PayloadT, HostEventT, ContextT>>;
9505
9688
  /**
9506
9689
  * Destroys the ThoughtSpot embed, and remove any nodes from the DOM.
9507
9690
  * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
@@ -1925,6 +1925,44 @@ export interface BaseViewConfig extends ApiInterceptFlags {
1925
1925
  * ```
1926
1926
  */
1927
1927
  customActions?: CustomAction[];
1928
+ /**
1929
+ * Refresh the auth token when the token is near expiry.
1930
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1931
+ * @example
1932
+ * ```js
1933
+ * const embed = new AppEmbed('#tsEmbed', {
1934
+ * ... // other embed view config
1935
+ * refreshAuthTokenOnNearExpiry: true,
1936
+ * })
1937
+ * ```
1938
+ */
1939
+ refreshAuthTokenOnNearExpiry?: boolean;
1940
+ /**
1941
+ * This flag skips payload validation so events can be processed even if the payload is old, incomplete, or from a trusted system.
1942
+ * @default false
1943
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1944
+ * @example
1945
+ * ```js
1946
+ * const embed = new AppEmbed('#tsEmbed', {
1947
+ * ... // other embed view config
1948
+ * shouldBypassPayloadValidation:true,
1949
+ * })
1950
+ * ```
1951
+ */
1952
+ shouldBypassPayloadValidation?: boolean;
1953
+ /**
1954
+ * Flag to use host events v2. This is used to enable the new host events v2 API.
1955
+ * @default false
1956
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1957
+ * @example
1958
+ * ```js
1959
+ * const embed = new AppEmbed('#tsEmbed', {
1960
+ * ... // other embed view config
1961
+ * useHostEventsV2:true,
1962
+ * })
1963
+ * ```
1964
+ */
1965
+ useHostEventsV2?: boolean;
1928
1966
  }
1929
1967
  /**
1930
1968
  * The configuration object for Home page embeds configs.
@@ -3922,7 +3960,19 @@ export declare enum EmbedEvent {
3922
3960
  * ```
3923
3961
  * @version SDK: 1.43.0 | ThoughtSpot: 10.15.0.cl
3924
3962
  */
3925
- ApiIntercept = "ApiIntercept"
3963
+ ApiIntercept = "ApiIntercept",
3964
+ /**
3965
+ * @hidden
3966
+ * Emitted when the auth token is about to get expired and needs to be refreshed.
3967
+ * @example
3968
+ * ```js
3969
+ * embed.on(EmbedEvent.RefreshAuthToken, (payload) => {
3970
+ * console.log('payload', payload);
3971
+ * })
3972
+ * ```
3973
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
3974
+ */
3975
+ RefreshAuthToken = "RefreshAuthToken"
3926
3976
  }
3927
3977
  /**
3928
3978
  * Event types that can be triggered by the host application
@@ -5304,7 +5354,18 @@ export declare enum HostEvent {
5304
5354
  * ```
5305
5355
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
5306
5356
  */
5307
- StartNewSpotterConversation = "StartNewSpotterConversation"
5357
+ StartNewSpotterConversation = "StartNewSpotterConversation",
5358
+ /**
5359
+ * @hidden
5360
+ * Get the current context of the embedded page.
5361
+ *
5362
+ * @example
5363
+ * ```js
5364
+ * const context = await liveboardEmbed.trigger(HostEvent.GetPageContext);
5365
+ * ```
5366
+ * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
5367
+ */
5368
+ GetPageContext = "GetPageContext"
5308
5369
  }
5309
5370
  /**
5310
5371
  * ThoughtSpot application pages include actions and menu commands
@@ -6985,6 +7046,24 @@ export interface EmbedErrorDetailsEvent {
6985
7046
  /** Additional context-specific for backward compatibility */
6986
7047
  [key: string]: any;
6987
7048
  }
7049
+ declare enum ContextType {
7050
+ /**
7051
+ * Search answer context for search page or edit viz dialog on liveboard page.
7052
+ */
7053
+ Search = "search-answer",
7054
+ /**
7055
+ * Liveboard context for liveboard page.
7056
+ */
7057
+ Liveboard = "liveboard",
7058
+ /**
7059
+ * Answer context for explore modal/page on liveboard page.
7060
+ */
7061
+ Answer = "answer",
7062
+ /**
7063
+ * Spotter context for spotter modal/page.
7064
+ */
7065
+ Spotter = "spotter"
7066
+ }
6988
7067
  export interface DefaultAppInitData {
6989
7068
  customisations: CustomisationsInterface;
6990
7069
  authToken: string;
@@ -7057,6 +7136,89 @@ export type ApiInterceptFlags = {
7057
7136
  */
7058
7137
  interceptTimeout?: number;
7059
7138
  };
7139
+ /**
7140
+ * Object IDs for the embedded component.
7141
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
7142
+ */
7143
+ export interface ObjectIds {
7144
+ /**
7145
+ * Liveboard ID.
7146
+ */
7147
+ liveboardId?: string;
7148
+ /**
7149
+ * Answer ID.
7150
+ */
7151
+ answerId?: string;
7152
+ /**
7153
+ * Viz IDs.
7154
+ */
7155
+ vizIds?: string[];
7156
+ /**
7157
+ * Data model IDs.
7158
+ */
7159
+ dataModelIds?: string[];
7160
+ /**
7161
+ * Modal title.
7162
+ */
7163
+ modalTitle?: string;
7164
+ }
7165
+ /**
7166
+ * Context object for the embedded component.
7167
+ * @example
7168
+ * ```js
7169
+ * const context = await embed.getCurrentContext();
7170
+ * console.log(context);
7171
+ * {
7172
+ * stack: [
7173
+ * {
7174
+ * name: 'Liveboard',
7175
+ * type: ContextType.Liveboard,
7176
+ * objectIds: {
7177
+ * liveboardId: '123',
7178
+ * },
7179
+ * },
7180
+ * ],
7181
+ * currentContext: {
7182
+ * name: 'Liveboard',
7183
+ * type: ContextType.Liveboard,
7184
+ * objectIds: {
7185
+ * liveboardId: '123',
7186
+ * },
7187
+ * },
7188
+ * }
7189
+ * ```
7190
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
7191
+ */
7192
+ export interface ContextObject {
7193
+ /**
7194
+ * Stack of context objects.
7195
+ */
7196
+ stack: Array<{
7197
+ /**
7198
+ * Name of the context object.
7199
+ */
7200
+ name: string;
7201
+ /**
7202
+ * Type of the context object.
7203
+ */
7204
+ type: ContextType;
7205
+ /**
7206
+ * Object IDs of the context object.
7207
+ */
7208
+ objectIds: ObjectIds;
7209
+ }>;
7210
+ /**
7211
+ * Current context object.
7212
+ */
7213
+ currentContext: {
7214
+ /**
7215
+ * Name of the current context object.
7216
+ */
7217
+ name: string;
7218
+ type: ContextType;
7219
+ objectIds: ObjectIds;
7220
+ };
7221
+ }
7060
7222
  declare enum AuthFailureType {
7061
7223
  SDK = "SDK",
7062
7224
  NO_COOKIE_ACCESS = "NO_COOKIE_ACCESS",
@@ -7230,9 +7392,9 @@ export type EmbedApiHostEventMapping = {
7230
7392
  [HostEvent.SaveAnswer]: UIPassthroughEvent.SaveAnswer;
7231
7393
  };
7232
7394
  export type HostEventRequest<HostEventT extends HostEvent> = HostEventT extends keyof EmbedApiHostEventMapping ? UIPassthroughRequest<EmbedApiHostEventMapping[HostEventT]> : any;
7233
- export type HostEventResponse<HostEventT extends HostEvent> = HostEventT extends keyof EmbedApiHostEventMapping ? UIPassthroughResponse<EmbedApiHostEventMapping[HostEventT]> : any;
7395
+ export type HostEventResponse<HostEventT extends HostEvent, ContextT extends ContextType> = HostEventT extends keyof EmbedApiHostEventMapping ? UIPassthroughResponse<EmbedApiHostEventMapping[HostEventT]> : any;
7234
7396
  export type TriggerPayload<PayloadT, HostEventT extends HostEvent> = PayloadT | HostEventRequest<HostEventT>;
7235
- export type TriggerResponse<PayloadT, HostEventT extends HostEvent> = PayloadT extends HostEventRequest<HostEventT> ? HostEventResponse<HostEventT> : any;
7397
+ export type TriggerResponse<PayloadT, HostEventT extends HostEvent, ContextT extends ContextType> = PayloadT extends HostEventRequest<HostEventT> ? HostEventResponse<HostEventT, ContextT> : any;
7236
7398
  declare class HostEventClient {
7237
7399
  iFrame: HTMLIFrameElement;
7238
7400
  constructor(iFrame?: HTMLIFrameElement);
@@ -7242,18 +7404,18 @@ declare class HostEventClient {
7242
7404
  * @param {any} data Data to send with the host event
7243
7405
  * @returns {Promise<any>} - the response from the process trigger
7244
7406
  */
7245
- protected processTrigger(message: HostEvent, data: any): Promise<any>;
7246
- handleHostEventWithParam<UIPassthroughEventT extends UIPassthroughEvent>(apiName: UIPassthroughEventT, parameters: UIPassthroughRequest<UIPassthroughEventT>): Promise<UIPassthroughResponse<UIPassthroughEventT>>;
7247
- hostEventFallback(hostEvent: HostEvent, data: any): Promise<any>;
7407
+ protected processTrigger(message: HostEvent, data: any, context?: ContextType): Promise<any>;
7408
+ handleHostEventWithParam<UIPassthroughEventT extends UIPassthroughEvent>(apiName: UIPassthroughEventT, parameters: UIPassthroughRequest<UIPassthroughEventT>, context?: ContextType): Promise<UIPassthroughResponse<UIPassthroughEventT>>;
7409
+ hostEventFallback(hostEvent: HostEvent, data: any, context?: ContextType): Promise<any>;
7248
7410
  /**
7249
7411
  * Setter for the iframe element used for host events
7250
7412
  * @param {HTMLIFrameElement} iFrame - the iframe element to set
7251
7413
  */
7252
7414
  setIframeElement(iFrame: HTMLIFrameElement): void;
7253
- triggerUIPassthroughApi<UIPassthroughEventT extends UIPassthroughEvent>(apiName: UIPassthroughEventT, parameters: UIPassthroughRequest<UIPassthroughEventT>): Promise<UIPassthroughArrayResponse<UIPassthroughEventT>>;
7254
- protected handlePinEvent(payload: HostEventRequest<HostEvent.Pin>): Promise<HostEventResponse<HostEvent.Pin>>;
7255
- protected handleSaveAnswerEvent(payload: HostEventRequest<HostEvent.SaveAnswer>): Promise<any>;
7256
- triggerHostEvent<HostEventT extends HostEvent, PayloadT>(hostEvent: HostEventT, payload?: TriggerPayload<PayloadT, HostEventT>): Promise<TriggerResponse<PayloadT, HostEventT>>;
7415
+ triggerUIPassthroughApi<UIPassthroughEventT extends UIPassthroughEvent>(apiName: UIPassthroughEventT, parameters: UIPassthroughRequest<UIPassthroughEventT>, context?: ContextType): Promise<UIPassthroughArrayResponse<UIPassthroughEventT>>;
7416
+ protected handlePinEvent(payload: HostEventRequest<HostEvent.Pin>, context?: ContextType): Promise<HostEventResponse<HostEvent.Pin, ContextType>>;
7417
+ protected handleSaveAnswerEvent(payload: HostEventRequest<HostEvent.SaveAnswer>, context?: ContextType): Promise<any>;
7418
+ triggerHostEvent<HostEventT extends HostEvent, PayloadT, ContextT extends ContextType>(hostEvent: HostEventT, payload?: TriggerPayload<PayloadT, HostEventT>, context?: ContextT): Promise<TriggerResponse<PayloadT, HostEventT, ContextType>>;
7257
7419
  }
7258
7420
  declare class TsEmbed {
7259
7421
  /**
@@ -7400,6 +7562,21 @@ declare class TsEmbed {
7400
7562
  * @param responder
7401
7563
  */
7402
7564
  private appInitCb;
7565
+ /**
7566
+ * Helper method to refresh/update auth token for TrustedAuthTokenCookieless auth type
7567
+ * @param responder - Function to send response back
7568
+ * @param eventType - The embed event type to send
7569
+ * @param forceRefresh - Whether to force refresh the token
7570
+ * @returns Promise that resolves if token was refreshed, rejects otherwise
7571
+ */
7572
+ private refreshAuthTokenForCookieless;
7573
+ private handleAuthFailure;
7574
+ /**
7575
+ * Refresh the auth token if the autoLogin is true and the authType is TrustedAuthTokenCookieless
7576
+ * @param _
7577
+ * @param responder
7578
+ */
7579
+ private tokenRefresh;
7403
7580
  /**
7404
7581
  * Sends updated auth token to the iFrame to avoid user logout
7405
7582
  * @param _
@@ -7575,7 +7752,7 @@ declare class TsEmbed {
7575
7752
  * @param {any} data The payload to send with the message
7576
7753
  * @returns A promise that resolves with the response from the embedded app
7577
7754
  */
7578
- trigger<HostEventT extends HostEvent, PayloadT>(messageType: HostEventT, data?: TriggerPayload<PayloadT, HostEventT>): Promise<TriggerResponse<PayloadT, HostEventT>>;
7755
+ trigger<HostEventT extends HostEvent, PayloadT, ContextT extends ContextType>(messageType: HostEventT, data?: TriggerPayload<PayloadT, HostEventT>, context?: ContextT): Promise<TriggerResponse<PayloadT, HostEventT, ContextT>>;
7579
7756
  /**
7580
7757
  * Triggers an event to the embedded app, skipping the UI flow.
7581
7758
  * @param {UIPassthroughEvent} apiName - The name of the API to be triggered.
@@ -7593,6 +7770,12 @@ declare class TsEmbed {
7593
7770
  render(): Promise<TsEmbed>;
7594
7771
  getIframeSrc(): string;
7595
7772
  protected handleRenderForPrerender(): Promise<TsEmbed>;
7773
+ /**
7774
+ * Get the current context of the embedded TS component.
7775
+ * @returns The current context object containing the page type and object ids.
7776
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
7777
+ */
7778
+ getCurrentContext(): Promise<ContextObject>;
7596
7779
  /**
7597
7780
  * Creates the preRender shell
7598
7781
  * @param showPreRenderByDefault - Show the preRender after render, hidden by default
@@ -9473,7 +9656,7 @@ declare class LiveboardEmbed extends V1Embed {
9473
9656
  * @param {any} data The payload to send with the message
9474
9657
  * @returns A promise that resolves with the response from the embedded app
9475
9658
  */
9476
- trigger<HostEventT extends HostEvent, PayloadT>(messageType: HostEventT, data?: TriggerPayload<PayloadT, HostEventT>): Promise<TriggerResponse<PayloadT, HostEventT>>;
9659
+ trigger<HostEventT extends HostEvent, PayloadT, ContextT extends ContextType>(messageType: HostEventT, data?: TriggerPayload<PayloadT, HostEventT>, context?: ContextT): Promise<TriggerResponse<PayloadT, HostEventT, ContextT>>;
9477
9660
  /**
9478
9661
  * Destroys the ThoughtSpot embed, and remove any nodes from the DOM.
9479
9662
  * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl