@thoughtspot/visual-embed-sdk 1.32.0 → 1.32.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.
- package/cjs/package.json +4 -22
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +6 -5
- package/cjs/src/auth.js.map +1 -1
- package/cjs/src/authToken.d.ts.map +1 -1
- package/cjs/src/authToken.js +5 -7
- package/cjs/src/authToken.js.map +1 -1
- package/cjs/src/css-variables.d.ts +28 -0
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +16 -14
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +19 -4
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +32 -0
- 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 +2 -0
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +2 -1
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +10 -0
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/search.d.ts +14 -13
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +6 -4
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +9 -9
- package/cjs/src/embed/search.spec.js.map +1 -1
- 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 +10 -6
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/errors.d.ts +11 -0
- package/cjs/src/errors.d.ts.map +1 -1
- package/cjs/src/errors.js +11 -0
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/mixpanel-service.d.ts +4 -0
- package/cjs/src/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +6 -1
- package/cjs/src/mixpanel-service.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/types.d.ts +178 -6
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +138 -3
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/processData.d.ts.map +1 -1
- package/cjs/src/utils/processData.js +2 -1
- package/cjs/src/utils/processData.js.map +1 -1
- package/cjs/src/utils/reporting.d.ts +16 -0
- package/cjs/src/utils/reporting.d.ts.map +1 -0
- package/cjs/src/utils/reporting.js +68 -0
- package/cjs/src/utils/reporting.js.map +1 -0
- package/cjs/src/utils/reporting.spec.d.ts +2 -0
- package/cjs/src/utils/reporting.spec.d.ts.map +1 -0
- package/cjs/src/utils/reporting.spec.js +76 -0
- package/cjs/src/utils/reporting.spec.js.map +1 -0
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/authToken.d.ts.map +1 -1
- package/dist/src/css-variables.d.ts +28 -0
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +16 -14
- 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.map +1 -1
- package/dist/src/embed/search.d.ts +14 -13
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +1 -1
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/errors.d.ts +11 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/mixpanel-service.d.ts +4 -0
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/types.d.ts +178 -6
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/src/utils/reporting.d.ts +16 -0
- package/dist/src/utils/reporting.d.ts.map +1 -0
- package/dist/src/utils/reporting.spec.d.ts +2 -0
- package/dist/src/utils/reporting.spec.d.ts.map +1 -0
- package/dist/tsembed-react.es.js +214 -39
- package/dist/tsembed-react.js +214 -39
- package/dist/tsembed.es.js +261 -40
- package/dist/tsembed.js +261 -40
- package/dist/visual-embed-sdk-react-full.d.ts +241 -34
- package/dist/visual-embed-sdk-react.d.ts +241 -34
- package/dist/visual-embed-sdk.d.ts +241 -34
- package/lib/package.json +4 -22
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +6 -5
- package/lib/src/auth.js.map +1 -1
- package/lib/src/authToken.d.ts.map +1 -1
- package/lib/src/authToken.js +5 -7
- package/lib/src/authToken.js.map +1 -1
- package/lib/src/css-variables.d.ts +28 -0
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +16 -14
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +18 -3
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +33 -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 +2 -0
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +2 -1
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +10 -0
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/search.d.ts +14 -13
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +6 -4
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +9 -9
- package/lib/src/embed/search.spec.js.map +1 -1
- 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 +10 -6
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/errors.d.ts +11 -0
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js +11 -0
- package/lib/src/errors.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts +4 -0
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +6 -1
- package/lib/src/mixpanel-service.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/types.d.ts +178 -6
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +138 -3
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +2 -1
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/reporting.d.ts +16 -0
- package/lib/src/utils/reporting.d.ts.map +1 -0
- package/lib/src/utils/reporting.js +62 -0
- package/lib/src/utils/reporting.js.map +1 -0
- package/lib/src/utils/reporting.spec.d.ts +2 -0
- package/lib/src/utils/reporting.spec.d.ts.map +1 -0
- package/lib/src/utils/reporting.spec.js +74 -0
- package/lib/src/utils/reporting.spec.js.map +1 -0
- package/lib/src/visual-embed-sdk.d.ts +241 -34
- package/package.json +4 -22
- package/src/auth.ts +6 -5
- package/src/authToken.ts +5 -9
- package/src/css-variables.ts +28 -0
- package/src/embed/app.spec.ts +48 -0
- package/src/embed/app.ts +25 -15
- package/src/embed/base.ts +3 -1
- package/src/embed/liveboard.spec.ts +14 -0
- package/src/embed/liveboard.ts +2 -0
- package/src/embed/search.spec.ts +9 -9
- package/src/embed/search.ts +20 -16
- package/src/embed/ts-embed.ts +13 -6
- package/src/errors.ts +11 -0
- package/src/mixpanel-service.ts +6 -1
- package/src/react/index.spec.tsx +1 -1
- package/src/types.ts +192 -13
- package/src/utils/processData.ts +2 -3
- package/src/utils/reporting.spec.ts +91 -0
- package/src/utils/reporting.ts +71 -0
package/src/types.ts
CHANGED
|
@@ -201,6 +201,10 @@ export enum HomeLeftNavItem {
|
|
|
201
201
|
* @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl
|
|
202
202
|
*/
|
|
203
203
|
SpotIQAnalysis = 'spotiq-analysis',
|
|
204
|
+
/**
|
|
205
|
+
* @version SDK: 1.34.0| ThoughtSpot: 10.3.0.cl
|
|
206
|
+
*/
|
|
207
|
+
LiveboardSchedules = 'liveboard-schedules'
|
|
204
208
|
}
|
|
205
209
|
export type DOMSelector = string | HTMLElement;
|
|
206
210
|
|
|
@@ -588,7 +592,7 @@ export interface EmbedConfig {
|
|
|
588
592
|
}
|
|
589
593
|
|
|
590
594
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
591
|
-
export interface LayoutConfig {
|
|
595
|
+
export interface LayoutConfig {}
|
|
592
596
|
|
|
593
597
|
/**
|
|
594
598
|
* Embedded iframe configuration
|
|
@@ -1012,6 +1016,43 @@ export interface ViewConfig {
|
|
|
1012
1016
|
*/
|
|
1013
1017
|
// eslint-disable-next-line camelcase
|
|
1014
1018
|
enableV2Shell_experimental?: boolean;
|
|
1019
|
+
/**
|
|
1020
|
+
* To set the initial state of the search bar in case of saved-answers.
|
|
1021
|
+
* @default true
|
|
1022
|
+
* @version SDK: 1.34.0 | Thoughtspot: 10.3.0.cl
|
|
1023
|
+
* @example
|
|
1024
|
+
* ```js
|
|
1025
|
+
* const embed = new LiveboardEmbed('#embed', {
|
|
1026
|
+
* liveboardId: '123',
|
|
1027
|
+
* collapseSearchBar: true
|
|
1028
|
+
* });
|
|
1029
|
+
*/
|
|
1030
|
+
collapseSearchBar?: boolean;
|
|
1031
|
+
/**
|
|
1032
|
+
* This flag can be used to disable links inside the embedded app,
|
|
1033
|
+
* and disables redirection of links in a new tab.
|
|
1034
|
+
* @example
|
|
1035
|
+
* ```js
|
|
1036
|
+
* const embed = new LiveboardEmbed('#embed', {
|
|
1037
|
+
* disableRedirectionLinksInNewTab: true
|
|
1038
|
+
* });
|
|
1039
|
+
* ```
|
|
1040
|
+
* @version SDK: 1.32.1 | ThoughtSpot: 10.3.0.cl
|
|
1041
|
+
*/
|
|
1042
|
+
disableRedirectionLinksInNewTab?: boolean;
|
|
1043
|
+
/**
|
|
1044
|
+
* Flag to control Data panel experience
|
|
1045
|
+
* @default true
|
|
1046
|
+
* @version SDK: 1.34.0 | Thoughtspot: 10.3.0.cl
|
|
1047
|
+
* @example
|
|
1048
|
+
* ```js
|
|
1049
|
+
* const embed = new AppEmbed('#tsEmbed', {
|
|
1050
|
+
* ... // other options
|
|
1051
|
+
* dataPanelV2: true,
|
|
1052
|
+
* })
|
|
1053
|
+
* ```
|
|
1054
|
+
*/
|
|
1055
|
+
dataPanelV2?: boolean;
|
|
1015
1056
|
}
|
|
1016
1057
|
|
|
1017
1058
|
/**
|
|
@@ -2493,13 +2534,15 @@ export enum HostEvent {
|
|
|
2493
2534
|
*
|
|
2494
2535
|
* @example
|
|
2495
2536
|
* ```js
|
|
2496
|
-
*
|
|
2537
|
+
* searchEmbed.trigger(HostEvent.CreateMonitor)
|
|
2497
2538
|
* ```
|
|
2498
2539
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
2499
2540
|
*/
|
|
2500
2541
|
CreateMonitor = 'createMonitor',
|
|
2501
2542
|
/**
|
|
2502
|
-
* Trigger the **Manage alerts** action on a
|
|
2543
|
+
* Trigger the **Manage alerts** action on a KPI chart
|
|
2544
|
+
* in a visualization or saved Answer.
|
|
2545
|
+
*
|
|
2503
2546
|
* @param - an object with `vizId` as a key
|
|
2504
2547
|
* @example
|
|
2505
2548
|
* ```js
|
|
@@ -2507,6 +2550,16 @@ export enum HostEvent {
|
|
|
2507
2550
|
* vizId: '730496d6-6903-4601-937e-2c691821af3c'
|
|
2508
2551
|
* })
|
|
2509
2552
|
* ```
|
|
2553
|
+
*
|
|
2554
|
+
* @example
|
|
2555
|
+
* ```js
|
|
2556
|
+
* searchEmbed.trigger(HostEvent.ManageMonitor)
|
|
2557
|
+
* ```
|
|
2558
|
+
*
|
|
2559
|
+
* @example
|
|
2560
|
+
* ```js
|
|
2561
|
+
* vizEmbed.trigger(HostEvent.ManageMonitor)
|
|
2562
|
+
* ```
|
|
2510
2563
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
2511
2564
|
*/
|
|
2512
2565
|
ManageMonitor = 'manageMonitor',
|
|
@@ -3084,6 +3137,8 @@ export enum Param {
|
|
|
3084
3137
|
IsFullAppEmbed = 'isFullAppEmbed',
|
|
3085
3138
|
IsOnBeforeGetVizDataInterceptEnabled = 'isOnBeforeGetVizDataInterceptEnabled',
|
|
3086
3139
|
FocusSearchBarOnRender = 'focusSearchBarOnRender',
|
|
3140
|
+
DisableRedirectionLinksInNewTab = 'disableRedirectionLinksInNewTab',
|
|
3141
|
+
HomePageSearchBarMode = 'homePageSearchBarMode',
|
|
3087
3142
|
}
|
|
3088
3143
|
|
|
3089
3144
|
/**
|
|
@@ -3234,6 +3289,7 @@ export enum Action {
|
|
|
3234
3289
|
*/
|
|
3235
3290
|
ConfigureFilter = 'configureFilter',
|
|
3236
3291
|
CollapseDataSources = 'collapseDataSources',
|
|
3292
|
+
CollapseDataPanel = 'collapseDataPanel',
|
|
3237
3293
|
/**
|
|
3238
3294
|
* The **Choose sources** button on Search page.
|
|
3239
3295
|
* Allows selecting data sources for search queries.
|
|
@@ -3630,12 +3686,15 @@ export enum Action {
|
|
|
3630
3686
|
* The Create alert action on KPI charts.
|
|
3631
3687
|
* @example
|
|
3632
3688
|
* ```js
|
|
3633
|
-
* disabledActions: [Action.CreateMonitor
|
|
3689
|
+
* disabledActions: [Action.CreateMonitor]
|
|
3634
3690
|
* ```
|
|
3635
3691
|
* @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
|
|
3636
3692
|
*/
|
|
3637
3693
|
CreateMonitor = 'createMonitor',
|
|
3638
3694
|
/**
|
|
3695
|
+
* @deprecated
|
|
3696
|
+
* Reports errors
|
|
3697
|
+
*
|
|
3639
3698
|
* @example
|
|
3640
3699
|
* ```js
|
|
3641
3700
|
* disabledActions: [Action.ReportError]
|
|
@@ -3860,35 +3919,84 @@ export enum Action {
|
|
|
3860
3919
|
*/
|
|
3861
3920
|
RenameModalTitleDescription = 'renameModalTitleDescription',
|
|
3862
3921
|
/**
|
|
3922
|
+
*
|
|
3923
|
+
* @example
|
|
3924
|
+
* ```js
|
|
3925
|
+
* disabledActions: [Action.RequestVerification]
|
|
3926
|
+
* ```
|
|
3863
3927
|
*
|
|
3864
3928
|
* @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl
|
|
3865
3929
|
*/
|
|
3866
3930
|
RequestVerification = 'requestVerification',
|
|
3867
3931
|
/**
|
|
3932
|
+
*
|
|
3933
|
+
* Allows users to mark a Liveboard as verified.
|
|
3934
|
+
*
|
|
3935
|
+
* @example
|
|
3936
|
+
* ```js
|
|
3937
|
+
* disabledActions: [Action.MarkAsVerified]
|
|
3938
|
+
* ```
|
|
3868
3939
|
* @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl
|
|
3869
3940
|
*/
|
|
3870
3941
|
MarkAsVerified = 'markAsVerified',
|
|
3871
3942
|
/**
|
|
3943
|
+
* The **Add Tab** action on a Liveboard.
|
|
3944
|
+
* Allows adding a new tab to a Liveboard view.
|
|
3945
|
+
*
|
|
3946
|
+
* @example
|
|
3947
|
+
* ```js
|
|
3948
|
+
* disabledActions: [Action.AddTab]
|
|
3949
|
+
* ```
|
|
3872
3950
|
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
3873
3951
|
*/
|
|
3874
3952
|
AddTab = 'addTab',
|
|
3875
3953
|
/**
|
|
3954
|
+
*
|
|
3955
|
+
* Initiates contextual change analysis on KPI charts.
|
|
3956
|
+
*
|
|
3957
|
+
* @example
|
|
3958
|
+
* ```js
|
|
3959
|
+
* disabledActions: [Action.EnableContextualChangeAnalysis]
|
|
3960
|
+
* ```
|
|
3876
3961
|
* @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl
|
|
3877
3962
|
*/
|
|
3878
3963
|
EnableContextualChangeAnalysis = 'enableContextualChangeAnalysis',
|
|
3879
3964
|
/**
|
|
3965
|
+
*
|
|
3966
|
+
* @example
|
|
3967
|
+
* ```js
|
|
3968
|
+
* disabledActions: [Action.ShowSageQuery]
|
|
3969
|
+
* ```
|
|
3970
|
+
*
|
|
3880
3971
|
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
3881
3972
|
*/
|
|
3882
3973
|
ShowSageQuery = 'showSageQuery',
|
|
3883
3974
|
/**
|
|
3975
|
+
*
|
|
3976
|
+
* @example
|
|
3977
|
+
* ```js
|
|
3978
|
+
* disabledActions: [Action.EditSageAnswer]
|
|
3979
|
+
* ```
|
|
3884
3980
|
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
3885
3981
|
*/
|
|
3886
3982
|
EditSageAnswer = 'editSageAnswer',
|
|
3887
3983
|
/**
|
|
3984
|
+
*
|
|
3985
|
+
* This action allows users to send feedback on AI-generated Answers.
|
|
3986
|
+
*
|
|
3987
|
+
* @example
|
|
3988
|
+
* ```js
|
|
3989
|
+
* disabledActions: [Action.SageAnswerFeedback]
|
|
3990
|
+
* ```
|
|
3888
3991
|
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
3889
3992
|
*/
|
|
3890
3993
|
SageAnswerFeedback = 'sageAnswerFeedback',
|
|
3891
3994
|
/**
|
|
3995
|
+
*
|
|
3996
|
+
* @example
|
|
3997
|
+
* ```js
|
|
3998
|
+
* disabledActions: [Action.ModifySageAnswer]
|
|
3999
|
+
* ```
|
|
3892
4000
|
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
3893
4001
|
*/
|
|
3894
4002
|
ModifySageAnswer = 'modifySageAnswer',
|
|
@@ -4018,6 +4126,77 @@ export enum Action {
|
|
|
4018
4126
|
* @version SDK: 1.27.10 | Thoughtspot: 9.12.5.cl
|
|
4019
4127
|
*/
|
|
4020
4128
|
AIHighlights = 'AIHighlights',
|
|
4129
|
+
|
|
4130
|
+
/**
|
|
4131
|
+
* Action ID for edit schedule action on schedule on homepage
|
|
4132
|
+
* @example
|
|
4133
|
+
* ```js
|
|
4134
|
+
* disabledActions: [Action.EditScheduleHomepage]
|
|
4135
|
+
* ```
|
|
4136
|
+
* @version SDK: 1.34.0 | Thoughtspot: 10.3.0.cl
|
|
4137
|
+
*/
|
|
4138
|
+
EditScheduleHomepage = 'editScheduleHomepage',
|
|
4139
|
+
|
|
4140
|
+
/**
|
|
4141
|
+
* Action ID for pause schedule action on schedule on homepage
|
|
4142
|
+
* @example
|
|
4143
|
+
* ```js
|
|
4144
|
+
* disabledActions: [Action.PauseScheduleHomepage]
|
|
4145
|
+
* ```
|
|
4146
|
+
* @version SDK: 1.34.0 | Thoughtspot: 10.3.0.cl
|
|
4147
|
+
*/
|
|
4148
|
+
PauseScheduleHomepage = 'pauseScheduleHomepage',
|
|
4149
|
+
|
|
4150
|
+
/**
|
|
4151
|
+
* Action ID for view schedule run action on schedule on homepage
|
|
4152
|
+
* @example
|
|
4153
|
+
* ```js
|
|
4154
|
+
* disabledActions: [Action.ViewScheduleRunHomepage]
|
|
4155
|
+
* ```
|
|
4156
|
+
* @version SDK: 1.34.0 | Thoughtspot: 10.3.0.cl
|
|
4157
|
+
*/
|
|
4158
|
+
ViewScheduleRunHomepage = 'viewScheduleRunHomepage',
|
|
4159
|
+
|
|
4160
|
+
/**
|
|
4161
|
+
* Action ID for unsubscribe schedule action on schedule on homepage
|
|
4162
|
+
* @example
|
|
4163
|
+
* ```js
|
|
4164
|
+
* disabledActions: [Action.UnsubscribeScheduleHomepage]
|
|
4165
|
+
* ```
|
|
4166
|
+
* @version SDK: 1.34.0 | Thoughtspot: 10.3.0.cl
|
|
4167
|
+
*/
|
|
4168
|
+
UnsubscribeScheduleHomepage = 'unsubscribeScheduleHomepage',
|
|
4169
|
+
|
|
4170
|
+
/**
|
|
4171
|
+
* The **Manage Tags** action on Homepage Favourite Module.
|
|
4172
|
+
*
|
|
4173
|
+
* @example
|
|
4174
|
+
* ```js
|
|
4175
|
+
* disabledActions: [Action.ManageTags]
|
|
4176
|
+
* ```
|
|
4177
|
+
* @version SDK : 1.34.0 | Thoughtspot: 10.3.0.cl
|
|
4178
|
+
*/
|
|
4179
|
+
ManageTags = 'manageTags',
|
|
4180
|
+
|
|
4181
|
+
/**
|
|
4182
|
+
* Action ID for delete schedule action on schedule on homepage
|
|
4183
|
+
* @example
|
|
4184
|
+
* ```js
|
|
4185
|
+
* disabledActions: [Action.DeleteScheduleHomepage]
|
|
4186
|
+
* ```
|
|
4187
|
+
* @version SDK: 1.34.0 | Thoughtspot: 10.3.0.cl
|
|
4188
|
+
*/
|
|
4189
|
+
DeleteScheduleHomepage = 'deleteScheduleHomepage',
|
|
4190
|
+
|
|
4191
|
+
/**
|
|
4192
|
+
* The **Analyze CTA** action on KPI chart.
|
|
4193
|
+
* @example
|
|
4194
|
+
* ```js
|
|
4195
|
+
* disabledActions: [Action.KPIAnalysisCTA]
|
|
4196
|
+
* ```
|
|
4197
|
+
* @version SDK: 1.34.0 | Thoughtspot: 10.3.0.cl
|
|
4198
|
+
*/
|
|
4199
|
+
KPIAnalysisCTA = 'kpiAnalysisCTA',
|
|
4021
4200
|
}
|
|
4022
4201
|
|
|
4023
4202
|
export interface AnswerServiceType {
|
|
@@ -4047,15 +4226,15 @@ export interface ColumnValue {
|
|
|
4047
4226
|
[key: string]: any;
|
|
4048
4227
|
};
|
|
4049
4228
|
value:
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4229
|
+
| string
|
|
4230
|
+
| number
|
|
4231
|
+
| boolean
|
|
4232
|
+
| {
|
|
4233
|
+
v: {
|
|
4234
|
+
s: number;
|
|
4235
|
+
e: number;
|
|
4236
|
+
};
|
|
4237
|
+
};
|
|
4059
4238
|
}
|
|
4060
4239
|
|
|
4061
4240
|
export interface VizPoint {
|
package/src/utils/processData.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { AuthFailureType } from '../auth';
|
|
|
9
9
|
import { AuthType, CustomActionPayload, EmbedEvent } from '../types';
|
|
10
10
|
import { AnswerService } from './graphql/answerService/answerService';
|
|
11
11
|
import { resetCachedAuthToken } from '../authToken';
|
|
12
|
+
import { ERROR_MESSAGE } from '../errors';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
*
|
|
@@ -62,9 +63,7 @@ function processNoCookieAccess(e: any, containerEl: Element) {
|
|
|
62
63
|
if (!ignoreNoCookieAccess) {
|
|
63
64
|
if (!suppressNoCookieAccessAlert && !suppressErrorAlerts) {
|
|
64
65
|
// eslint-disable-next-line no-alert
|
|
65
|
-
alert(
|
|
66
|
-
'Third party cookie access is blocked on this browser, please allow third party cookies for this to work properly. \nYou can use `suppressNoCookieAccessAlert` to suppress this message.',
|
|
67
|
-
);
|
|
66
|
+
alert(ERROR_MESSAGE.THIRD_PARTY_COOKIE_BLOCKED_ALERT);
|
|
68
67
|
}
|
|
69
68
|
// eslint-disable-next-line no-param-reassign
|
|
70
69
|
containerEl.innerHTML = loginFailedMessage;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { setEmbedConfig } from '../embed/embedConfig';
|
|
2
|
+
import { registerReportingObserver, getGlobalReportingObserver, resetGlobalReportingObserver } from './reporting';
|
|
3
|
+
import { logger } from './logger';
|
|
4
|
+
import { AuthType } from '../types';
|
|
5
|
+
import { ERROR_MESSAGE } from '../errors';
|
|
6
|
+
|
|
7
|
+
jest.mock('./logger');
|
|
8
|
+
|
|
9
|
+
describe('ReportingObserver', () => {
|
|
10
|
+
let mockReportingObserver: jest.Mock;
|
|
11
|
+
|
|
12
|
+
beforeAll(() => {
|
|
13
|
+
// Mock the ReportingObserver
|
|
14
|
+
mockReportingObserver = jest.fn().mockImplementation((callback: any, options: any) => ({
|
|
15
|
+
observe: jest.fn(),
|
|
16
|
+
disconnect: jest.fn(),
|
|
17
|
+
takeRecords: jest.fn(),
|
|
18
|
+
}));
|
|
19
|
+
(window as any).ReportingObserver = mockReportingObserver;
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
jest.clearAllMocks();
|
|
24
|
+
resetGlobalReportingObserver();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('should warn if ReportingObserver is not supported', () => {
|
|
28
|
+
(window as any).ReportingObserver = undefined;
|
|
29
|
+
const observer = registerReportingObserver();
|
|
30
|
+
expect(observer).toBeNull();
|
|
31
|
+
expect(logger.warn).toHaveBeenCalledWith('ReportingObserver not supported');
|
|
32
|
+
(window as any).ReportingObserver = mockReportingObserver;
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('should return existing globalObserver if override is false', () => {
|
|
36
|
+
const firstObserver = registerReportingObserver();
|
|
37
|
+
const secondObserver = registerReportingObserver();
|
|
38
|
+
expect(firstObserver === secondObserver).toBe(true);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test('should override existing globalObserver if override is true', () => {
|
|
42
|
+
const firstObserver = registerReportingObserver();
|
|
43
|
+
const secondObserver = registerReportingObserver(true);
|
|
44
|
+
expect(firstObserver).not.toBe(secondObserver);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('should return globalObserver', () => {
|
|
48
|
+
const observer = registerReportingObserver();
|
|
49
|
+
const globalObserver = getGlobalReportingObserver();
|
|
50
|
+
expect(globalObserver).toBe(observer);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test('Should register a global observer with callback', () => {
|
|
54
|
+
let callBackPassed: any;
|
|
55
|
+
|
|
56
|
+
// Mock the ReportingObserver
|
|
57
|
+
const NewMockRO = jest.fn().mockImplementation((callback: any, options: any) => {
|
|
58
|
+
callBackPassed = callback;
|
|
59
|
+
return ({
|
|
60
|
+
observe: jest.fn(),
|
|
61
|
+
disconnect: jest.fn(),
|
|
62
|
+
takeRecords: jest.fn(),
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
const currentObserver = (window as any).ReportingObserver;
|
|
66
|
+
(window as any).ReportingObserver = NewMockRO;
|
|
67
|
+
|
|
68
|
+
setEmbedConfig({
|
|
69
|
+
thoughtSpotHost: 'testHost',
|
|
70
|
+
authType: AuthType.None,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
const mockAlert = jest.fn();
|
|
74
|
+
window.alert = mockAlert;
|
|
75
|
+
|
|
76
|
+
const observer = registerReportingObserver();
|
|
77
|
+
expect(observer).toBeDefined();
|
|
78
|
+
expect(NewMockRO).toHaveBeenCalled();
|
|
79
|
+
expect(callBackPassed).toBeDefined();
|
|
80
|
+
|
|
81
|
+
// call the callback
|
|
82
|
+
callBackPassed([{ type: 'csp-violation', url: 'testHost', body: { effectiveDirective: 'frame-ancestors' } }]);
|
|
83
|
+
|
|
84
|
+
expect(mockAlert).toHaveBeenCalledWith(ERROR_MESSAGE.CSP_VIOLATION_ALERT);
|
|
85
|
+
expect(logger.error).toHaveBeenCalledWith(
|
|
86
|
+
ERROR_MESSAGE.CSP_FRAME_HOST_VIOLATION_LOG_MESSAGE,
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
(window as any).ReportingObserver = currentObserver;
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { getEmbedConfig } from '../embed/embedConfig';
|
|
2
|
+
import { logger } from './logger';
|
|
3
|
+
import { ERROR_MESSAGE } from '../errors';
|
|
4
|
+
|
|
5
|
+
enum ReportType {
|
|
6
|
+
CSP_VIOLATION = 'csp-violation',
|
|
7
|
+
DEPRECATION = 'deprecation',
|
|
8
|
+
INTERVENTION = 'intervention',
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let globalObserver: ReportingObserver | null = null;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Register a global ReportingObserver to capture all unhandled errors
|
|
15
|
+
* @param overrideExisting boolean to override existing observer
|
|
16
|
+
* @returns ReportingObserver | null
|
|
17
|
+
*/
|
|
18
|
+
export function registerReportingObserver(overrideExisting = false): ReportingObserver | null {
|
|
19
|
+
if (!((window as any).ReportingObserver)) {
|
|
20
|
+
logger.warn(ERROR_MESSAGE.MISSING_REPORTING_OBSERVER);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (overrideExisting) {
|
|
25
|
+
resetGlobalReportingObserver();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (globalObserver) {
|
|
29
|
+
return globalObserver;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const embedConfig = getEmbedConfig();
|
|
33
|
+
|
|
34
|
+
globalObserver = new ReportingObserver((reports) => {
|
|
35
|
+
reports.forEach((report) => {
|
|
36
|
+
const { type, url, body } = report;
|
|
37
|
+
const reportBody = body as any;
|
|
38
|
+
|
|
39
|
+
const isThoughtSpotHost = url
|
|
40
|
+
&& url.startsWith(embedConfig.thoughtSpotHost);
|
|
41
|
+
|
|
42
|
+
const isFrameHostError = type === ReportType.CSP_VIOLATION
|
|
43
|
+
&& reportBody.effectiveDirective === 'frame-ancestors';
|
|
44
|
+
|
|
45
|
+
if (isThoughtSpotHost && isFrameHostError) {
|
|
46
|
+
if (!embedConfig.suppressErrorAlerts) {
|
|
47
|
+
alert(ERROR_MESSAGE.CSP_VIOLATION_ALERT);
|
|
48
|
+
}
|
|
49
|
+
logger.error(ERROR_MESSAGE.CSP_FRAME_HOST_VIOLATION_LOG_MESSAGE);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}, { buffered: true });
|
|
53
|
+
globalObserver.observe();
|
|
54
|
+
return globalObserver;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Get the global ReportingObserver
|
|
59
|
+
* @returns - ReportingObserver | null
|
|
60
|
+
*/
|
|
61
|
+
export function getGlobalReportingObserver(): ReportingObserver | null {
|
|
62
|
+
return globalObserver;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Resets the global ReportingObserver
|
|
67
|
+
*/
|
|
68
|
+
export function resetGlobalReportingObserver(): void {
|
|
69
|
+
if (globalObserver) globalObserver.disconnect();
|
|
70
|
+
globalObserver = null;
|
|
71
|
+
}
|