@thoughtspot/visual-embed-sdk 1.28.0-alpha.1 → 1.28.0-alpha.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.
- package/cjs/package.json +1 -1
- package/cjs/src/auth.d.ts +16 -1
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +5 -1
- package/cjs/src/auth.js.map +1 -1
- package/cjs/src/auth.spec.d.ts.map +1 -1
- package/cjs/src/auth.spec.js +9 -0
- package/cjs/src/auth.spec.js.map +1 -1
- package/cjs/src/embed/app.d.ts +18 -4
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +2 -2
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +19 -1
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/base.d.ts.map +1 -1
- package/cjs/src/embed/base.js +0 -3
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/embed.spec.js +0 -15
- package/cjs/src/embed/embed.spec.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +7 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +2 -2
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +20 -1
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/pinboard.spec.js +20 -1
- package/cjs/src/embed/pinboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +1 -1
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +2 -2
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +1 -1
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +2 -2
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +1 -1
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +3 -3
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +25 -1
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed-trigger.spec.d.ts +2 -0
- package/cjs/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
- package/cjs/src/embed/ts-embed-trigger.spec.js +34 -0
- package/cjs/src/embed/ts-embed-trigger.spec.js.map +1 -0
- package/cjs/src/embed/ts-embed.d.ts +1 -1
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +14 -11
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +47 -17
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +2 -1
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +3 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +1 -1
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/test/test-utils.d.ts +1 -0
- package/cjs/src/test/test-utils.d.ts.map +1 -1
- package/cjs/src/test/test-utils.js +10 -1
- package/cjs/src/test/test-utils.js.map +1 -1
- package/cjs/src/tokenizedFetch.d.ts +9 -0
- package/cjs/src/tokenizedFetch.d.ts.map +1 -1
- package/cjs/src/tokenizedFetch.js +9 -0
- package/cjs/src/tokenizedFetch.js.map +1 -1
- package/cjs/src/types.d.ts +178 -37
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +138 -21
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/authService/authService.d.ts.map +1 -1
- package/cjs/src/utils/authService/authService.js +9 -3
- package/cjs/src/utils/authService/authService.js.map +1 -1
- package/cjs/src/utils/authService/authService.spec.js +22 -0
- package/cjs/src/utils/authService/authService.spec.js.map +1 -1
- package/dist/src/auth.d.ts +16 -1
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/auth.spec.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +18 -4
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +7 -1
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +1 -1
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +1 -1
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +1 -1
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed-trigger.spec.d.ts +2 -0
- package/dist/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
- package/dist/src/embed/ts-embed.d.ts +1 -1
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/test/test-utils.d.ts +1 -0
- package/dist/src/test/test-utils.d.ts.map +1 -1
- package/dist/src/tokenizedFetch.d.ts +9 -0
- package/dist/src/tokenizedFetch.d.ts.map +1 -1
- package/dist/src/types.d.ts +178 -37
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/authService/authService.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +186 -48
- package/dist/tsembed-react.js +186 -48
- package/dist/tsembed.es.js +187 -52
- package/dist/tsembed.js +187 -51
- package/dist/visual-embed-sdk-react-full.d.ts +235 -48
- package/dist/visual-embed-sdk-react.d.ts +235 -48
- package/dist/visual-embed-sdk.d.ts +235 -48
- package/lib/package.json +1 -1
- package/lib/src/auth.d.ts +16 -1
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +5 -1
- package/lib/src/auth.js.map +1 -1
- package/lib/src/auth.spec.d.ts.map +1 -1
- package/lib/src/auth.spec.js +9 -0
- package/lib/src/auth.spec.js.map +1 -1
- package/lib/src/embed/app.d.ts +18 -4
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +2 -2
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +19 -1
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js +0 -3
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/embed.spec.js +2 -17
- package/lib/src/embed/embed.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +7 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +2 -2
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +20 -1
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/pinboard.spec.js +20 -1
- package/lib/src/embed/pinboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts +1 -1
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +2 -2
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +1 -1
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +2 -2
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +1 -1
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +3 -3
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +25 -1
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/ts-embed-trigger.spec.d.ts +2 -0
- package/lib/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
- package/lib/src/embed/ts-embed-trigger.spec.js +32 -0
- package/lib/src/embed/ts-embed-trigger.spec.js.map +1 -0
- package/lib/src/embed/ts-embed.d.ts +1 -1
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +14 -11
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +41 -11
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +2 -1
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -1
- package/lib/src/index.js.map +1 -1
- package/lib/src/react/index.spec.js +1 -1
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/test/test-utils.d.ts +1 -0
- package/lib/src/test/test-utils.d.ts.map +1 -1
- package/lib/src/test/test-utils.js +8 -0
- package/lib/src/test/test-utils.js.map +1 -1
- package/lib/src/tokenizedFetch.d.ts +9 -0
- package/lib/src/tokenizedFetch.d.ts.map +1 -1
- package/lib/src/tokenizedFetch.js +9 -0
- package/lib/src/tokenizedFetch.js.map +1 -1
- package/lib/src/types.d.ts +178 -37
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +138 -21
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/authService/authService.d.ts.map +1 -1
- package/lib/src/utils/authService/authService.js +9 -3
- package/lib/src/utils/authService/authService.js.map +1 -1
- package/lib/src/utils/authService/authService.spec.js +22 -0
- package/lib/src/utils/authService/authService.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +238 -48
- package/package.json +1 -1
- package/src/auth.spec.ts +10 -0
- package/src/auth.ts +21 -2
- package/src/embed/app.spec.ts +24 -1
- package/src/embed/app.ts +19 -5
- package/src/embed/base.ts +1 -5
- package/src/embed/embed.spec.ts +0 -18
- package/src/embed/liveboard.spec.ts +24 -1
- package/src/embed/liveboard.ts +8 -2
- package/src/embed/pinboard.spec.ts +24 -1
- package/src/embed/sage.ts +2 -2
- package/src/embed/search-bar.tsx +2 -2
- package/src/embed/search.spec.ts +29 -1
- package/src/embed/search.ts +3 -3
- package/src/embed/ts-embed-trigger.spec.ts +39 -0
- package/src/embed/ts-embed.spec.ts +49 -16
- package/src/embed/ts-embed.ts +21 -16
- package/src/index.ts +2 -0
- package/src/react/index.spec.tsx +1 -0
- package/src/test/test-utils.ts +9 -0
- package/src/tokenizedFetch.ts +9 -0
- package/src/types.ts +179 -34
- package/src/utils/authService/authService.spec.ts +27 -0
- package/src/utils/authService/authService.ts +14 -13
package/src/tokenizedFetch.ts
CHANGED
|
@@ -3,6 +3,15 @@ import { getEmbedConfig } from './embed/embedConfig';
|
|
|
3
3
|
|
|
4
4
|
import { AuthType } from './types';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Fetch wrapper that adds the authentication token to the request.
|
|
8
|
+
* Use this to call the ThoughtSpot APIs when using the visual embed sdk.
|
|
9
|
+
*
|
|
10
|
+
* @param input
|
|
11
|
+
* @param init
|
|
12
|
+
* @version SDK: 1.28.0
|
|
13
|
+
* @group Global methods
|
|
14
|
+
*/
|
|
6
15
|
export const tokenizedFetch: typeof fetch = async (input, init): Promise<Response> => {
|
|
7
16
|
const embedConfig = getEmbedConfig();
|
|
8
17
|
if (embedConfig.authType !== AuthType.TrustedAuthTokenCookieless) {
|
package/src/types.ts
CHANGED
|
@@ -145,6 +145,7 @@ export enum AuthType {
|
|
|
145
145
|
* .then((response) => response.json())
|
|
146
146
|
* .then((data) => data.token);
|
|
147
147
|
* }
|
|
148
|
+
* });
|
|
148
149
|
* ```
|
|
149
150
|
*/
|
|
150
151
|
TrustedAuthToken = 'AuthServer',
|
|
@@ -179,15 +180,30 @@ export enum AuthType {
|
|
|
179
180
|
}
|
|
180
181
|
|
|
181
182
|
export enum HomeLeftNavItem {
|
|
182
|
-
|
|
183
|
+
/**
|
|
184
|
+
* @version SDK: 1.27.9| ThoughtSpot: 9.12.0.cl
|
|
185
|
+
*/
|
|
186
|
+
SearchData = 'search-data',
|
|
187
|
+
/**
|
|
188
|
+
* @version SDK: 1.27.9| ThoughtSpot: 9.12.0.cl
|
|
189
|
+
*/
|
|
183
190
|
Home = 'insights-home',
|
|
191
|
+
/**
|
|
192
|
+
* @version SDK: 1.27.9| ThoughtSpot: 9.12.0.cl
|
|
193
|
+
*/
|
|
184
194
|
Liveboards = 'liveboards',
|
|
195
|
+
/**
|
|
196
|
+
* @version SDK: 1.27.9| ThoughtSpot: 9.12.0.cl
|
|
197
|
+
*/
|
|
185
198
|
Answers = 'answers',
|
|
199
|
+
/**
|
|
200
|
+
* @version SDK: 1.27.9| ThoughtSpot: 9.12.0.cl
|
|
201
|
+
*/
|
|
186
202
|
MonitorSubscription = 'monitor-alerts',
|
|
203
|
+
/**
|
|
204
|
+
* @version SDK: 1.27.9| ThoughtSpot: 9.12.0.cl
|
|
205
|
+
*/
|
|
187
206
|
SpotIQAnalysis = 'spotiq-analysis',
|
|
188
|
-
Tutorials = 'tutorials',
|
|
189
|
-
Documentation = 'documentation',
|
|
190
|
-
Community = 'community',
|
|
191
207
|
}
|
|
192
208
|
export type DOMSelector = string | HTMLElement;
|
|
193
209
|
|
|
@@ -246,6 +262,8 @@ export interface CustomStyles {
|
|
|
246
262
|
/**
|
|
247
263
|
* Configuration to define the customization on the Embedded
|
|
248
264
|
* Thoughtspot components.
|
|
265
|
+
* You can customize styles, text strings, and icons.
|
|
266
|
+
* For more information, see https://developers.thoughtspot.com/docs/custom-css.
|
|
249
267
|
*
|
|
250
268
|
* @example
|
|
251
269
|
* ```js
|
|
@@ -260,7 +278,12 @@ export interface CustomStyles {
|
|
|
260
278
|
* },
|
|
261
279
|
* content: {
|
|
262
280
|
* strings: {
|
|
263
|
-
* 'LIVEBOARDS': 'Dashboards'
|
|
281
|
+
* 'LIVEBOARDS': 'Dashboards',
|
|
282
|
+
* 'ANSWERS': 'Visualizations',
|
|
283
|
+
* 'Edit': 'Modify',
|
|
284
|
+
* 'Show underlying data': 'Show source data',
|
|
285
|
+
* 'SpotIQ': 'Insights',
|
|
286
|
+
* 'Monitor': 'Alerts',
|
|
264
287
|
* }
|
|
265
288
|
* },
|
|
266
289
|
* iconSpriteUrl: 'https://my-custom-icon-sprite.svg'
|
|
@@ -293,12 +316,6 @@ export interface EmbedConfig {
|
|
|
293
316
|
* The ThoughtSpot cluster hostname or IP address.
|
|
294
317
|
*/
|
|
295
318
|
thoughtSpotHost: string;
|
|
296
|
-
/**
|
|
297
|
-
* If true, all the iframe links will have /v2 added automatically.
|
|
298
|
-
* If false, all the iframe links will have /v1 added automatically.
|
|
299
|
-
* If undefined, nothing will be added
|
|
300
|
-
*/
|
|
301
|
-
enableReactShell?: boolean | undefined;
|
|
302
319
|
/**
|
|
303
320
|
* The authentication mechanism to use.
|
|
304
321
|
*/
|
|
@@ -561,6 +578,12 @@ export interface EmbedConfig {
|
|
|
561
578
|
* @version SDK: 1.26.7 | ThoughtSpot: 9.10.0.cl
|
|
562
579
|
*/
|
|
563
580
|
logLevel?: LogLevel;
|
|
581
|
+
/**
|
|
582
|
+
* Disables the Mixpanel tracking from the SDK.
|
|
583
|
+
*
|
|
584
|
+
* @version SDK: 1.27.9
|
|
585
|
+
*/
|
|
586
|
+
disableSDKTracking?: boolean;
|
|
564
587
|
}
|
|
565
588
|
|
|
566
589
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
@@ -740,9 +763,14 @@ export interface ViewConfig {
|
|
|
740
763
|
usePrerenderedIfAvailable?: boolean;
|
|
741
764
|
/**
|
|
742
765
|
* Boolean to exclude runtimeFilters in the URL
|
|
766
|
+
* By default it is true, this flag removes runtime filters from the URL
|
|
767
|
+
* when set to false, runtime filters will be included in the URL.
|
|
743
768
|
*
|
|
744
|
-
*
|
|
745
|
-
*
|
|
769
|
+
* Irrespective of this flag, runtime filters ( if passed ) will be applied to the
|
|
770
|
+
* embedded view.
|
|
771
|
+
*
|
|
772
|
+
* @default true
|
|
773
|
+
* @version SDK: 1.24.0 | ThoughtSpot: 9.5.0.cl
|
|
746
774
|
*/
|
|
747
775
|
excludeRuntimeFiltersfromURL?: boolean;
|
|
748
776
|
/**
|
|
@@ -764,16 +792,24 @@ export interface ViewConfig {
|
|
|
764
792
|
hiddenTabs?: string[];
|
|
765
793
|
/**
|
|
766
794
|
* Hide the home page modules
|
|
767
|
-
*
|
|
795
|
+
* For example: hiddenHomepageModules = [HomepageModule.MyLibrary]
|
|
768
796
|
*
|
|
769
|
-
*
|
|
797
|
+
* **Note**: This option does not apply to the classic homepage.
|
|
798
|
+
* To access the updated modular homepage, set
|
|
799
|
+
* `modularHomeExperience` to `true` (available in Early Access from 9.12 forward).
|
|
800
|
+
*
|
|
801
|
+
* @version SDK: 1.27.9 | Thoughtspot: 9.12.0.cl
|
|
770
802
|
*/
|
|
771
803
|
hiddenHomepageModules?: HomepageModule[];
|
|
772
804
|
/**
|
|
773
805
|
* reordering the home page modules
|
|
774
806
|
* eg: reorderedHomepageModules = [HomepageModule.MyLibrary, HomepageModule.Watchlist]
|
|
775
807
|
*
|
|
776
|
-
*
|
|
808
|
+
* **Note**: This option does not apply to the classic homepage.
|
|
809
|
+
* To access the updated modular homepage, set
|
|
810
|
+
* `modularHomeExperience` to `true` (available in Early Access from 9.12.0.cl onwards).
|
|
811
|
+
*
|
|
812
|
+
* @version SDK: 1.27.9| Thoughtspot: 9.12.0.cl
|
|
777
813
|
*/
|
|
778
814
|
reorderedHomepageModules?: HomepageModule[];
|
|
779
815
|
/**
|
|
@@ -800,7 +836,11 @@ export interface ViewConfig {
|
|
|
800
836
|
* hiddenHomeLeftNavItems = [HomeLeftNavItem.Home]
|
|
801
837
|
* ```
|
|
802
838
|
*
|
|
803
|
-
*
|
|
839
|
+
* **Note**: This option does not apply to the classic homepage.
|
|
840
|
+
* To access the updated modular homepage, set
|
|
841
|
+
* `modularHomeExperience` to `true` (available in Early Access from 9.12 forward).
|
|
842
|
+
*
|
|
843
|
+
* @version SDK: 1.27.9 | Thoughtspot: 9.12.0.cl
|
|
804
844
|
*/
|
|
805
845
|
hiddenHomeLeftNavItems?: HomeLeftNavItem[];
|
|
806
846
|
/**
|
|
@@ -991,6 +1031,10 @@ export enum HomepageModule {
|
|
|
991
1031
|
MyLibrary = 'MY_LIBRARY',
|
|
992
1032
|
/**
|
|
993
1033
|
* Trending list
|
|
1034
|
+
*
|
|
1035
|
+
* **Note**: This option does not apply to the classic homepage.
|
|
1036
|
+
* To access the updated modular homepage, set
|
|
1037
|
+
* `modularHomeExperience` to `true` (available in Early Access from 9.12.0.cl onwards).
|
|
994
1038
|
*/
|
|
995
1039
|
Trending = 'TRENDING',
|
|
996
1040
|
/**
|
|
@@ -1132,7 +1176,7 @@ export enum EmbedEvent {
|
|
|
1132
1176
|
* @returns nonFilteredColumns - The columns that were not filtered
|
|
1133
1177
|
* @example
|
|
1134
1178
|
*```js
|
|
1135
|
-
* searchEmbed.trigger(
|
|
1179
|
+
* searchEmbed.trigger(EmbedEvent.DrillDown, {
|
|
1136
1180
|
* points: {
|
|
1137
1181
|
* clickedPoint,
|
|
1138
1182
|
* selectedPoints: selectedPoint
|
|
@@ -1224,7 +1268,7 @@ export enum EmbedEvent {
|
|
|
1224
1268
|
* @important
|
|
1225
1269
|
* @example
|
|
1226
1270
|
* ```js
|
|
1227
|
-
* embed.on(
|
|
1271
|
+
* embed.on(EmbedEvent.VizPointClick, ({data}) => {
|
|
1228
1272
|
* console.log(
|
|
1229
1273
|
* data.vizId, // viz id
|
|
1230
1274
|
* data.clickedPoint.selectedAttributes[0].value,
|
|
@@ -1237,15 +1281,41 @@ export enum EmbedEvent {
|
|
|
1237
1281
|
*/
|
|
1238
1282
|
VizPointClick = 'vizPointClick',
|
|
1239
1283
|
/**
|
|
1240
|
-
* An error has occurred.
|
|
1284
|
+
* An error has occurred. This event is fired for the following error types:
|
|
1285
|
+
*
|
|
1286
|
+
* API - API call failure error.
|
|
1287
|
+
*
|
|
1288
|
+
* FULLSCREEN - Error when presenting a Liveboard or visualization in full screen mode.
|
|
1289
|
+
*
|
|
1290
|
+
* SINGLE_VALUE_FILTER - Error due to multiple values in the single value filter.
|
|
1291
|
+
*
|
|
1292
|
+
* NON_EXIST_FILTER - Error due to a non-existent filter.
|
|
1293
|
+
*
|
|
1294
|
+
* INVALID_DATE_VALUE - Invalid date value error.
|
|
1295
|
+
*
|
|
1296
|
+
* INVALID_OPERATOR - Use of invalid operator during filter application.
|
|
1297
|
+
*
|
|
1298
|
+
* For more information, see [Developer Documentation](https://developers.thoughtspot.com/docs/events-app-integration#errorType)
|
|
1241
1299
|
*
|
|
1242
1300
|
* @returns error - An error object or message
|
|
1243
1301
|
* @example
|
|
1244
1302
|
* ```js
|
|
1245
|
-
*
|
|
1246
|
-
*
|
|
1247
|
-
*
|
|
1248
|
-
*
|
|
1303
|
+
* // API error
|
|
1304
|
+
* SearchEmbed.on(EmbedEvent.Error, (error) => {
|
|
1305
|
+
* console.log(error);
|
|
1306
|
+
* // { type: "Error", data: { errorType: "API", error: { message: '...', error: '...' } } }
|
|
1307
|
+
* });
|
|
1308
|
+
* ```
|
|
1309
|
+
* @example
|
|
1310
|
+
* ```js
|
|
1311
|
+
* // Fullscreen error (Errors during presenting of a liveboard)
|
|
1312
|
+
* LiveboardEmbed.on(EmbedEvent.Error, (error) => {
|
|
1313
|
+
* console.log(error);
|
|
1314
|
+
* // { type: "Error", data: { errorType: "FULLSCREEN", error: {
|
|
1315
|
+
* // message: "Fullscreen API is not enabled",
|
|
1316
|
+
* // stack: "..."
|
|
1317
|
+
* // } }}
|
|
1318
|
+
* })
|
|
1249
1319
|
* ```
|
|
1250
1320
|
*/
|
|
1251
1321
|
Error = 'Error',
|
|
@@ -1791,7 +1861,7 @@ export enum EmbedEvent {
|
|
|
1791
1861
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
1792
1862
|
* @example
|
|
1793
1863
|
*```js
|
|
1794
|
-
* liveboardEmbed.trigger(
|
|
1864
|
+
* liveboardEmbed.trigger(EmbedEvent.Delete,
|
|
1795
1865
|
* {vizId: '730496d6-6903-4601-937e-2c691821af3c'})
|
|
1796
1866
|
*```
|
|
1797
1867
|
*/
|
|
@@ -1802,7 +1872,7 @@ export enum EmbedEvent {
|
|
|
1802
1872
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
1803
1873
|
* @example
|
|
1804
1874
|
*```js
|
|
1805
|
-
* liveboardEmbed.trigger(
|
|
1875
|
+
* liveboardEmbed.trigger(EmbedEvent.SchedulesList)
|
|
1806
1876
|
*```
|
|
1807
1877
|
*/
|
|
1808
1878
|
SchedulesList = 'schedule-list',
|
|
@@ -1812,7 +1882,7 @@ export enum EmbedEvent {
|
|
|
1812
1882
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
1813
1883
|
* @example
|
|
1814
1884
|
*```js
|
|
1815
|
-
* liveboardEmbed.trigger(
|
|
1885
|
+
* liveboardEmbed.trigger(EmbedEvent.Cancel)
|
|
1816
1886
|
*```
|
|
1817
1887
|
*/
|
|
1818
1888
|
Cancel = 'cancel',
|
|
@@ -1822,7 +1892,7 @@ export enum EmbedEvent {
|
|
|
1822
1892
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
1823
1893
|
* @example
|
|
1824
1894
|
*```js
|
|
1825
|
-
* liveboardEmbed.trigger(
|
|
1895
|
+
* liveboardEmbed.trigger(EmbedEvent.Explore, {
|
|
1826
1896
|
* vizId: '730496d6-6903-4601-937e-2c691821af3c'})
|
|
1827
1897
|
*```
|
|
1828
1898
|
*/
|
|
@@ -1833,7 +1903,7 @@ export enum EmbedEvent {
|
|
|
1833
1903
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
1834
1904
|
* @example
|
|
1835
1905
|
*```js
|
|
1836
|
-
* liveboardEmbed.trigger(
|
|
1906
|
+
* liveboardEmbed.trigger(EmbedEvent.CopyLink, {
|
|
1837
1907
|
* vizId: '730496d6-6903-4601-937e-2c691821af3c'})
|
|
1838
1908
|
*```
|
|
1839
1909
|
*/
|
|
@@ -1955,7 +2025,7 @@ export enum EmbedEvent {
|
|
|
1955
2025
|
/**
|
|
1956
2026
|
* Emitted when a LB/viz is renamed
|
|
1957
2027
|
*
|
|
1958
|
-
* @version SDK : 1.28.0 | ThoughtSpot: 9.
|
|
2028
|
+
* @version SDK : 1.28.0 | ThoughtSpot: 9.10.5.cl
|
|
1959
2029
|
*/
|
|
1960
2030
|
Rename = 'rename',
|
|
1961
2031
|
}
|
|
@@ -2104,10 +2174,13 @@ export enum HostEvent {
|
|
|
2104
2174
|
* _String_. The name of the column to filter on.
|
|
2105
2175
|
* `operator`
|
|
2106
2176
|
* Runtime filter operator to apply. For information,
|
|
2107
|
-
* see
|
|
2177
|
+
* see https://developers.thoughtspot.com/docs/?pageid=runtime-filters#rtOperator.
|
|
2108
2178
|
* `values`
|
|
2109
2179
|
* List of operands. Some operators such as EQ, LE allow a single value, whereas
|
|
2110
2180
|
* operators such as BW and IN accept multiple operands.
|
|
2181
|
+
* **Note**: `HostEvent.UpdateRuntimeFilters` is not supported in
|
|
2182
|
+
* Search embedding (SearchEmbed) and Natural Language Search
|
|
2183
|
+
* embedding (SageEmbed).
|
|
2111
2184
|
*
|
|
2112
2185
|
* @param - {@link RuntimeFilter}[] an array of {@link RuntimeFilter} Types.
|
|
2113
2186
|
* @example
|
|
@@ -2630,22 +2703,24 @@ export enum HostEvent {
|
|
|
2630
2703
|
*/
|
|
2631
2704
|
ResetSearch = 'resetSearch',
|
|
2632
2705
|
/**
|
|
2633
|
-
*
|
|
2706
|
+
*
|
|
2634
2707
|
* Get the currents visible and runtime filters applied on a Liveboard
|
|
2708
|
+
*
|
|
2635
2709
|
* @example
|
|
2636
2710
|
* liveboardEmbed.trigger(HostEvent.GetFilters)
|
|
2637
2711
|
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
|
|
2638
2712
|
*/
|
|
2639
2713
|
GetFilters = 'getFilters',
|
|
2640
2714
|
/**
|
|
2641
|
-
*
|
|
2715
|
+
*
|
|
2642
2716
|
* Update the visible filters on the Liveboard.
|
|
2717
|
+
*
|
|
2643
2718
|
* @param - filter: filter object containing column name and filter operation and values
|
|
2644
2719
|
* @example
|
|
2645
2720
|
*
|
|
2646
2721
|
* ```js
|
|
2647
2722
|
* liveboardEmbed.trigger(HostEvent.UpdateFilters, {
|
|
2648
|
-
* filter: { column: 'column name', oper: '
|
|
2723
|
+
* filter: { column: 'column name', oper: 'IN', values: [1,2,3], is_mandatory: false }
|
|
2649
2724
|
* })
|
|
2650
2725
|
* ```
|
|
2651
2726
|
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
|
|
@@ -2732,6 +2807,32 @@ export enum HostEvent {
|
|
|
2732
2807
|
* @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl
|
|
2733
2808
|
*/
|
|
2734
2809
|
AskSage = 'AskSage',
|
|
2810
|
+
/**
|
|
2811
|
+
* Trigger UpdateCrossFilter for Liveboard
|
|
2812
|
+
*
|
|
2813
|
+
* @example
|
|
2814
|
+
* ```js
|
|
2815
|
+
* liveboardEmbed.trigger(HostEvent.UpdateCrossFilter, {
|
|
2816
|
+
* vizId: 'b535c760-8bbe-4e6f-bb26-af56b4129a1e',
|
|
2817
|
+
* conditions: [
|
|
2818
|
+
* { columnName: 'Category', values: ['mfgr#12','mfgr#14'] },
|
|
2819
|
+
* { columnName: 'color', values: ['mint','hot'] },
|
|
2820
|
+
* ],
|
|
2821
|
+
* });
|
|
2822
|
+
* ```
|
|
2823
|
+
* @version SDK: 1.29.0 | Thoughtspot: 10.0.0.cl
|
|
2824
|
+
*/
|
|
2825
|
+
UpdateCrossFilter = 'UpdateCrossFilter',
|
|
2826
|
+
/**
|
|
2827
|
+
* Trigger ResetLiveboardPersonalisedView for Liveboard
|
|
2828
|
+
*
|
|
2829
|
+
* @example
|
|
2830
|
+
* ```js
|
|
2831
|
+
* liveboardEmbed.trigger(HostEvent.ResetLiveboardPersonalisedView);
|
|
2832
|
+
* ```
|
|
2833
|
+
* @version SDK: 1.29.0 | Thoughtspot: 10.1.0.cl
|
|
2834
|
+
*/
|
|
2835
|
+
ResetLiveboardPersonalisedView = 'ResetLiveboardPersonalisedView',
|
|
2735
2836
|
}
|
|
2736
2837
|
|
|
2737
2838
|
/**
|
|
@@ -3707,6 +3808,50 @@ export enum Action {
|
|
|
3707
3808
|
* @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl
|
|
3708
3809
|
*/
|
|
3709
3810
|
AskAi = 'AskAi',
|
|
3811
|
+
|
|
3812
|
+
/**
|
|
3813
|
+
* The **Add KPI to Watchlist** action on Home page watchlist.
|
|
3814
|
+
*
|
|
3815
|
+
* @example
|
|
3816
|
+
* ```js
|
|
3817
|
+
* disabledActions: [Action.AddToWatchlist]
|
|
3818
|
+
* ```
|
|
3819
|
+
* @version SDK : 1.27.9 | Thoughtspot: 9.12.5.cl
|
|
3820
|
+
*/
|
|
3821
|
+
AddToWatchlist = 'addToWatchlist',
|
|
3822
|
+
|
|
3823
|
+
/**
|
|
3824
|
+
* The **Remove from watchlist** menu action on KPI watchlist.
|
|
3825
|
+
*
|
|
3826
|
+
* @example
|
|
3827
|
+
* ```js
|
|
3828
|
+
* disabledActions: [Action.RemoveFromWatchlist]
|
|
3829
|
+
* ```
|
|
3830
|
+
* @version SDK : 1.27.9 | Thoughtspot: 9.12.5.cl
|
|
3831
|
+
*/
|
|
3832
|
+
RemoveFromWatchlist = 'removeFromWatchlist',
|
|
3833
|
+
|
|
3834
|
+
/**
|
|
3835
|
+
* The **Copy KPI Link** menu action on KPI watchlist.
|
|
3836
|
+
*
|
|
3837
|
+
* @example
|
|
3838
|
+
* ```js
|
|
3839
|
+
* disabledActions: [Action.CopyKpiLink]
|
|
3840
|
+
* ```
|
|
3841
|
+
* @version SDK : 1.27.9 | Thoughtspot: 9.12.5.cl
|
|
3842
|
+
*/
|
|
3843
|
+
CopyKpiLink = 'copyKpiLink',
|
|
3844
|
+
|
|
3845
|
+
/**
|
|
3846
|
+
* Action ID for AI Highlights button
|
|
3847
|
+
*
|
|
3848
|
+
* @example
|
|
3849
|
+
* ```js
|
|
3850
|
+
* hiddenAction: [Action.AIHighlights]
|
|
3851
|
+
* ```
|
|
3852
|
+
* @version SDK: 1.27.10 | Thoughtspot: 9.12.5.cl
|
|
3853
|
+
*/
|
|
3854
|
+
AIHighlights = 'AIHighlights',
|
|
3710
3855
|
}
|
|
3711
3856
|
|
|
3712
3857
|
export interface AnswerServiceType {
|
|
@@ -53,6 +53,18 @@ describe('Unit test for authService', () => {
|
|
|
53
53
|
);
|
|
54
54
|
});
|
|
55
55
|
|
|
56
|
+
test('fetchAuthService without username', async () => {
|
|
57
|
+
global.fetch = jest.fn(() => Promise.resolve({ success: true, ok: true }));
|
|
58
|
+
await fetchAuthService(thoughtSpotHost, undefined, authToken);
|
|
59
|
+
expect(fetch).toBeCalledWith(
|
|
60
|
+
`${thoughtSpotHost}${EndPoints.TOKEN_LOGIN}?auth_token=${authToken}`,
|
|
61
|
+
{
|
|
62
|
+
credentials: 'include',
|
|
63
|
+
redirect: 'manual',
|
|
64
|
+
},
|
|
65
|
+
);
|
|
66
|
+
});
|
|
67
|
+
|
|
56
68
|
test('fetchAuthPostService', async () => {
|
|
57
69
|
global.fetch = jest.fn(() => Promise.resolve({ success: true, ok: true }));
|
|
58
70
|
await fetchAuthPostService(thoughtSpotHost, username, authToken);
|
|
@@ -68,6 +80,21 @@ describe('Unit test for authService', () => {
|
|
|
68
80
|
});
|
|
69
81
|
});
|
|
70
82
|
|
|
83
|
+
test('fetchAuthPostService without username', async () => {
|
|
84
|
+
global.fetch = jest.fn(() => Promise.resolve({ success: true, ok: true }));
|
|
85
|
+
await fetchAuthPostService(thoughtSpotHost, undefined, authToken);
|
|
86
|
+
expect(fetch).toBeCalledWith(`${thoughtSpotHost}${EndPoints.TOKEN_LOGIN}`, {
|
|
87
|
+
method: 'POST',
|
|
88
|
+
credentials: 'include',
|
|
89
|
+
redirect: 'manual',
|
|
90
|
+
body: 'auth_token=token',
|
|
91
|
+
headers: {
|
|
92
|
+
'content-type': 'application/x-www-form-urlencoded',
|
|
93
|
+
'x-requested-by': 'ThoughtSpot',
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
71
98
|
test('fetchBasicAuthService called with manual redirect', async () => {
|
|
72
99
|
global.fetch = jest.fn(() => Promise.resolve({ success: true, ok: true }));
|
|
73
100
|
await fetchBasicAuthService(thoughtSpotHost, username, password);
|
|
@@ -47,7 +47,7 @@ export async function verifyTokenService(
|
|
|
47
47
|
});
|
|
48
48
|
return res.ok;
|
|
49
49
|
} catch (e) {
|
|
50
|
-
logger.
|
|
50
|
+
logger.warn(`Token Verification Service failed : ${e.message}`);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
return false;
|
|
@@ -72,15 +72,15 @@ export async function fetchAuthService(
|
|
|
72
72
|
username: string,
|
|
73
73
|
authToken: string,
|
|
74
74
|
): Promise<any> {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
{
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
);
|
|
75
|
+
const fetchUrlParams = username
|
|
76
|
+
? `username=${username}&auth_token=${authToken}`
|
|
77
|
+
: `auth_token=${authToken}`;
|
|
78
|
+
return failureLoggedFetch(`${thoughtSpotHost}${EndPoints.TOKEN_LOGIN}?${fetchUrlParams}`, {
|
|
79
|
+
credentials: 'include',
|
|
80
|
+
// We do not want to follow the redirect, as it starts giving a CORS
|
|
81
|
+
// error
|
|
82
|
+
redirect: 'manual',
|
|
83
|
+
});
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
/**
|
|
@@ -94,15 +94,16 @@ export async function fetchAuthPostService(
|
|
|
94
94
|
username: string,
|
|
95
95
|
authToken: string,
|
|
96
96
|
): Promise<any> {
|
|
97
|
+
const bodyPrams = username
|
|
98
|
+
? `username=${encodeURIComponent(username)}&auth_token=${encodeURIComponent(authToken)}`
|
|
99
|
+
: `auth_token=${encodeURIComponent(authToken)}`;
|
|
97
100
|
return failureLoggedFetch(`${thoughtSpotHost}${EndPoints.TOKEN_LOGIN}`, {
|
|
98
101
|
method: 'POST',
|
|
99
102
|
headers: {
|
|
100
103
|
'content-type': 'application/x-www-form-urlencoded',
|
|
101
104
|
'x-requested-by': 'ThoughtSpot',
|
|
102
105
|
},
|
|
103
|
-
body:
|
|
104
|
-
authToken,
|
|
105
|
-
)}`,
|
|
106
|
+
body: bodyPrams,
|
|
106
107
|
credentials: 'include',
|
|
107
108
|
// We do not want to follow the redirect, as it starts giving a CORS
|
|
108
109
|
// error
|