@thoughtspot/visual-embed-sdk 1.27.9 → 1.27.11
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 +2 -2
- package/cjs/src/embed/app.d.ts +144 -7
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +5 -5
- 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 +113 -4
- 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 +37 -6
- 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 +80 -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 +50 -17
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +5 -3
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +6 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/mixpanel-service.d.ts +1 -0
- package/cjs/src/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +1 -0
- package/cjs/src/mixpanel-service.js.map +1 -1
- package/cjs/src/react/all-types-export.d.ts +1 -1
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +2 -1
- package/cjs/src/react/all-types-export.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 +295 -44
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +119 -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 +8 -2
- 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/cjs/src/utils/graphql/answerService/answerService.d.ts +56 -2
- package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.js +55 -0
- package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/dist/src/embed/app.d.ts +144 -7
- 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 +113 -4
- 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 +37 -6
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +80 -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 +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mixpanel-service.d.ts +1 -0
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.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 +295 -44
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/authService/authService.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answerService.d.ts +56 -2
- package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +219 -47
- package/dist/tsembed-react.js +212 -47
- package/dist/tsembed.es.js +336 -167
- package/dist/tsembed.js +15335 -15170
- package/dist/visual-embed-sdk-react-full.d.ts +769 -66
- package/dist/visual-embed-sdk-react.d.ts +769 -66
- package/dist/visual-embed-sdk.d.ts +769 -66
- package/lib/package.json +2 -2
- package/lib/src/embed/app.d.ts +144 -7
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +5 -5
- 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 +113 -4
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +3 -3
- 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 +37 -6
- 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 +80 -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 +44 -11
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +5 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +3 -3
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts +1 -0
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +1 -0
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -1
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +1 -1
- package/lib/src/react/all-types-export.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 +295 -44
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +119 -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 +8 -2
- 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/utils/graphql/answerService/answerService.d.ts +56 -2
- package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.js +55 -0
- package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +778 -69
- package/package.json +2 -2
- package/src/embed/app.spec.ts +24 -1
- package/src/embed/app.ts +148 -13
- 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 +121 -15
- package/src/embed/pinboard.spec.ts +24 -1
- package/src/embed/sage.ts +2 -2
- package/src/embed/search-bar.tsx +38 -7
- package/src/embed/search.spec.ts +29 -1
- package/src/embed/search.ts +82 -3
- package/src/embed/ts-embed-trigger.spec.ts +39 -0
- package/src/embed/ts-embed.spec.ts +46 -11
- package/src/embed/ts-embed.ts +18 -14
- package/src/index.ts +12 -1
- package/src/mixpanel-service.ts +1 -0
- package/src/react/all-types-export.ts +1 -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 +296 -42
- package/src/utils/authService/authService.spec.ts +27 -0
- package/src/utils/authService/authService.ts +13 -12
- package/src/utils/graphql/answerService/answerService.ts +56 -1
|
@@ -169,6 +169,7 @@ describe('Pinboard/viz embed tests', () => {
|
|
|
169
169
|
values: [1000],
|
|
170
170
|
},
|
|
171
171
|
],
|
|
172
|
+
excludeRuntimeFiltersfromURL: false,
|
|
172
173
|
} as LiveboardViewConfig);
|
|
173
174
|
pinboardEmbed.render();
|
|
174
175
|
await executeAfterWait(() => {
|
|
@@ -179,7 +180,7 @@ describe('Pinboard/viz embed tests', () => {
|
|
|
179
180
|
});
|
|
180
181
|
});
|
|
181
182
|
|
|
182
|
-
test('should not
|
|
183
|
+
test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
|
|
183
184
|
const pinboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
184
185
|
...defaultViewConfig,
|
|
185
186
|
pinboardId,
|
|
@@ -202,6 +203,28 @@ describe('Pinboard/viz embed tests', () => {
|
|
|
202
203
|
});
|
|
203
204
|
});
|
|
204
205
|
|
|
206
|
+
test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is undefined', async () => {
|
|
207
|
+
const liveboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
208
|
+
...defaultViewConfig,
|
|
209
|
+
pinboardId,
|
|
210
|
+
vizId,
|
|
211
|
+
runtimeFilters: [
|
|
212
|
+
{
|
|
213
|
+
columnName: 'sales',
|
|
214
|
+
operator: RuntimeFilterOp.EQ,
|
|
215
|
+
values: [1000],
|
|
216
|
+
},
|
|
217
|
+
],
|
|
218
|
+
} as LiveboardViewConfig);
|
|
219
|
+
liveboardEmbed.render();
|
|
220
|
+
await executeAfterWait(() => {
|
|
221
|
+
expectUrlMatchesWithParams(
|
|
222
|
+
getIFrameSrc(),
|
|
223
|
+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParamsVizEmbed}#/embed/viz/${pinboardId}/${vizId}`,
|
|
224
|
+
);
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
|
|
205
228
|
test('should register event handler to adjust iframe height', async () => {
|
|
206
229
|
const pinboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
207
230
|
...defaultViewConfig,
|
package/src/embed/sage.ts
CHANGED
|
@@ -237,11 +237,11 @@ export class SageEmbed extends V1Embed {
|
|
|
237
237
|
*
|
|
238
238
|
* @returns {SageEmbed} Eureka/Sage embed
|
|
239
239
|
*/
|
|
240
|
-
public render(): SageEmbed {
|
|
240
|
+
public async render(): Promise<SageEmbed> {
|
|
241
241
|
super.render();
|
|
242
242
|
|
|
243
243
|
const src = this.getIFrameSrc();
|
|
244
|
-
this.renderV1Embed(src);
|
|
244
|
+
await this.renderV1Embed(src);
|
|
245
245
|
|
|
246
246
|
return this;
|
|
247
247
|
}
|
package/src/embed/search-bar.tsx
CHANGED
|
@@ -23,18 +23,44 @@ export interface SearchBarViewConfig
|
|
|
23
23
|
* Only a single data source is supported currently.
|
|
24
24
|
*
|
|
25
25
|
* @deprecated Use `dataSource` instead
|
|
26
|
+
*
|
|
27
|
+
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.1-sw
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```js
|
|
31
|
+
* const embed = new SearchBarEmbed('#tsEmbed', {
|
|
32
|
+
* ... // other options
|
|
33
|
+
* dataSources:['id-2345','id-2345'],
|
|
34
|
+
* })
|
|
35
|
+
* ```
|
|
26
36
|
*/
|
|
27
37
|
dataSources?: string[];
|
|
28
38
|
/**
|
|
29
|
-
*
|
|
39
|
+
* Pass the ID of the source to be selected.
|
|
30
40
|
*
|
|
31
41
|
* @version: SDK: 1.19.0, ThoughtSpot 9.0.0.cl, 9.0.1.sw
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```js
|
|
45
|
+
* const embed = new SearchBarEmbed('#tsEmbed', {
|
|
46
|
+
* ... // other options
|
|
47
|
+
* dataSource:'id-2345',
|
|
48
|
+
* })
|
|
49
|
+
* ```
|
|
32
50
|
*/
|
|
33
51
|
dataSource?: string;
|
|
34
52
|
/**
|
|
35
53
|
* Boolean to define if the last selected data source should be used
|
|
36
54
|
*
|
|
37
55
|
* @version: SDK: 1.24.0, ThoughtSpot 9.5.0.cl, 9.5.0.sw
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```js
|
|
59
|
+
* const embed = new SearchBarEmbed('#tsEmbed', {
|
|
60
|
+
* ... // other options
|
|
61
|
+
* useLastSelectedSources:false,
|
|
62
|
+
* })
|
|
63
|
+
* ```
|
|
38
64
|
*/
|
|
39
65
|
useLastSelectedSources?: boolean;
|
|
40
66
|
/**
|
|
@@ -48,12 +74,17 @@ export interface SearchBarViewConfig
|
|
|
48
74
|
* If it’s not executed, the focus is placed at the end of
|
|
49
75
|
* the token string in the search bar.
|
|
50
76
|
*
|
|
77
|
+
* @version: SDK: 1.2.0 | ThoughtSpot: 9.4.0.sw
|
|
78
|
+
*
|
|
51
79
|
* @example
|
|
52
80
|
* ```js
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
81
|
+
* const embed = new SearchBarEmbed('#tsEmbed', {
|
|
82
|
+
* ... // other options
|
|
83
|
+
* searchOptions: {
|
|
84
|
+
* searchTokenString: '[quantity purchased] [region]',
|
|
85
|
+
* executeSearch: true,
|
|
86
|
+
* }
|
|
87
|
+
* })
|
|
57
88
|
* ```
|
|
58
89
|
*/
|
|
59
90
|
searchOptions?: SearchOptions;
|
|
@@ -130,11 +161,11 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
130
161
|
/**
|
|
131
162
|
* Render the embedded ThoughtSpot search
|
|
132
163
|
*/
|
|
133
|
-
public render(): SearchBarEmbed {
|
|
164
|
+
public async render(): Promise<SearchBarEmbed> {
|
|
134
165
|
super.render();
|
|
135
166
|
|
|
136
167
|
const src = this.getIFrameSrc();
|
|
137
|
-
this.renderIFrame(src);
|
|
168
|
+
await this.renderIFrame(src);
|
|
138
169
|
return this;
|
|
139
170
|
}
|
|
140
171
|
}
|
package/src/embed/search.spec.ts
CHANGED
|
@@ -178,6 +178,7 @@ describe('Search embed tests', () => {
|
|
|
178
178
|
values: ['berkeley'],
|
|
179
179
|
},
|
|
180
180
|
],
|
|
181
|
+
excludeRuntimeFiltersfromURL: false,
|
|
181
182
|
});
|
|
182
183
|
searchEmbed.render();
|
|
183
184
|
await executeAfterWait(() => {
|
|
@@ -188,7 +189,7 @@ describe('Search embed tests', () => {
|
|
|
188
189
|
});
|
|
189
190
|
});
|
|
190
191
|
|
|
191
|
-
test('should not
|
|
192
|
+
test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
|
|
192
193
|
const dataSources = ['data-source-1'];
|
|
193
194
|
const searchOptions = {
|
|
194
195
|
searchTokenString: '[commit date][revenue]',
|
|
@@ -216,6 +217,33 @@ describe('Search embed tests', () => {
|
|
|
216
217
|
});
|
|
217
218
|
});
|
|
218
219
|
|
|
220
|
+
test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is undefined', async () => {
|
|
221
|
+
const dataSources = ['data-source-1'];
|
|
222
|
+
const searchOptions = {
|
|
223
|
+
searchTokenString: '[commit date][revenue]',
|
|
224
|
+
};
|
|
225
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
226
|
+
...defaultViewConfig,
|
|
227
|
+
hideDataSources: true,
|
|
228
|
+
dataSources,
|
|
229
|
+
searchOptions,
|
|
230
|
+
runtimeFilters: [
|
|
231
|
+
{
|
|
232
|
+
columnName: 'city',
|
|
233
|
+
operator: RuntimeFilterOp.EQ,
|
|
234
|
+
values: ['berkeley'],
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
});
|
|
238
|
+
searchEmbed.render();
|
|
239
|
+
await executeAfterWait(() => {
|
|
240
|
+
expectUrlMatchesWithParams(
|
|
241
|
+
getIFrameSrc(),
|
|
242
|
+
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
243
|
+
);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
|
|
219
247
|
test('Should add dataSource', async () => {
|
|
220
248
|
const dataSource = 'data-source-1';
|
|
221
249
|
const searchOptions = {
|
package/src/embed/search.ts
CHANGED
|
@@ -57,16 +57,43 @@ export interface SearchViewConfig
|
|
|
57
57
|
/**
|
|
58
58
|
* If set to true, the data sources panel is collapsed on load,
|
|
59
59
|
* but can be expanded manually.
|
|
60
|
+
*
|
|
61
|
+
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
|
|
62
|
+
* @example
|
|
63
|
+
* ```js
|
|
64
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
65
|
+
* ... // other options
|
|
66
|
+
* collapseDataSources:true,
|
|
67
|
+
* })
|
|
68
|
+
* ```
|
|
60
69
|
*/
|
|
61
70
|
collapseDataSources?: boolean;
|
|
62
71
|
/**
|
|
63
72
|
* Show or hide the data sources panel.
|
|
73
|
+
*
|
|
74
|
+
* @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
|
|
75
|
+
* @example
|
|
76
|
+
* ```js
|
|
77
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
78
|
+
* ... // other options
|
|
79
|
+
* hideDataSources:true,
|
|
80
|
+
* })
|
|
81
|
+
* ```
|
|
64
82
|
*/
|
|
65
83
|
hideDataSources?: boolean;
|
|
66
84
|
/**
|
|
67
85
|
* Show or hide the charts and tables in search answers.
|
|
68
86
|
* This attribute can be used to create a custom visualization
|
|
69
87
|
* using raw answer data.
|
|
88
|
+
*
|
|
89
|
+
* @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
|
|
90
|
+
* @example
|
|
91
|
+
* ```js
|
|
92
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
93
|
+
* ... // other options
|
|
94
|
+
* hideResults:true,
|
|
95
|
+
* })
|
|
96
|
+
* ```
|
|
70
97
|
*/
|
|
71
98
|
hideResults?: boolean;
|
|
72
99
|
/**
|
|
@@ -77,11 +104,26 @@ export interface SearchViewConfig
|
|
|
77
104
|
* If set to true, the Search Assist feature is enabled.
|
|
78
105
|
*
|
|
79
106
|
* @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
|
|
107
|
+
* @example
|
|
108
|
+
* ```js
|
|
109
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
110
|
+
* ... // other options
|
|
111
|
+
* enableSearchAssist:true,
|
|
112
|
+
* })
|
|
113
|
+
* ```
|
|
80
114
|
*/
|
|
81
115
|
enableSearchAssist?: boolean;
|
|
82
116
|
/**
|
|
83
117
|
* If set to true, the tabular view is set as the default
|
|
84
118
|
* format for presenting search data.
|
|
119
|
+
*
|
|
120
|
+
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
|
|
121
|
+
* @example
|
|
122
|
+
* ```js
|
|
123
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
124
|
+
* ... // other options
|
|
125
|
+
* forceTable:true,
|
|
126
|
+
* })
|
|
85
127
|
*/
|
|
86
128
|
forceTable?: boolean;
|
|
87
129
|
/**
|
|
@@ -89,12 +131,26 @@ export interface SearchViewConfig
|
|
|
89
131
|
* Only a single data source is supported currently.
|
|
90
132
|
*
|
|
91
133
|
* @deprecated Use `dataSource` instead.
|
|
134
|
+
* @example
|
|
135
|
+
* ```js
|
|
136
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
137
|
+
* ... // other options
|
|
138
|
+
* dataSources:['id-234','id-456'],
|
|
139
|
+
* })
|
|
140
|
+
* ```
|
|
92
141
|
*/
|
|
93
142
|
dataSources?: string[];
|
|
94
143
|
/**
|
|
95
144
|
* The array of data source GUIDs to set on load.
|
|
96
145
|
*
|
|
97
146
|
* @version: SDK: 1.19.0
|
|
147
|
+
* @example
|
|
148
|
+
* ```js
|
|
149
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
150
|
+
* ... // other options
|
|
151
|
+
* dataSource:'id-234',
|
|
152
|
+
* })
|
|
153
|
+
* ```
|
|
98
154
|
*/
|
|
99
155
|
dataSource?: string;
|
|
100
156
|
/**
|
|
@@ -127,6 +183,15 @@ export interface SearchViewConfig
|
|
|
127
183
|
searchOptions?: SearchOptions;
|
|
128
184
|
/**
|
|
129
185
|
* The GUID of a saved answer to load initially.
|
|
186
|
+
*
|
|
187
|
+
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
|
|
188
|
+
* @example
|
|
189
|
+
* ```js
|
|
190
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
191
|
+
* ... // other options
|
|
192
|
+
* answerId:'sed-1234',
|
|
193
|
+
* })
|
|
194
|
+
* ```
|
|
130
195
|
*/
|
|
131
196
|
answerId?: string;
|
|
132
197
|
/**
|
|
@@ -134,6 +199,13 @@ export interface SearchViewConfig
|
|
|
134
199
|
* The chart/table should still be visible.
|
|
135
200
|
*
|
|
136
201
|
* @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw
|
|
202
|
+
* @example
|
|
203
|
+
* ```js
|
|
204
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
205
|
+
* ... // other options
|
|
206
|
+
* hideSearchBar:true,
|
|
207
|
+
* })
|
|
208
|
+
* ```
|
|
137
209
|
*/
|
|
138
210
|
hideSearchBar?: boolean;
|
|
139
211
|
/**
|
|
@@ -141,6 +213,13 @@ export interface SearchViewConfig
|
|
|
141
213
|
*
|
|
142
214
|
* @default false
|
|
143
215
|
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
216
|
+
* @example
|
|
217
|
+
* ```js
|
|
218
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
219
|
+
* ... // other options
|
|
220
|
+
* dataPanelV2:false,
|
|
221
|
+
* })
|
|
222
|
+
* ```
|
|
144
223
|
*/
|
|
145
224
|
dataPanelV2?: boolean;
|
|
146
225
|
/**
|
|
@@ -201,7 +280,7 @@ export class SearchEmbed extends TsEmbed {
|
|
|
201
280
|
runtimeFilters,
|
|
202
281
|
dataSource,
|
|
203
282
|
dataSources,
|
|
204
|
-
excludeRuntimeFiltersfromURL,
|
|
283
|
+
excludeRuntimeFiltersfromURL = true,
|
|
205
284
|
hideSearchBar,
|
|
206
285
|
dataPanelV2 = false,
|
|
207
286
|
useLastSelectedSources = false,
|
|
@@ -286,12 +365,12 @@ export class SearchEmbed extends TsEmbed {
|
|
|
286
365
|
/**
|
|
287
366
|
* Render the embedded ThoughtSpot search
|
|
288
367
|
*/
|
|
289
|
-
public render(): SearchEmbed {
|
|
368
|
+
public async render(): Promise<SearchEmbed> {
|
|
290
369
|
super.render();
|
|
291
370
|
const { answerId } = this.viewConfig;
|
|
292
371
|
|
|
293
372
|
const src = this.getIFrameSrc();
|
|
294
|
-
this.renderIFrame(src);
|
|
373
|
+
await this.renderIFrame(src);
|
|
295
374
|
getAuthPromise().then(() => {
|
|
296
375
|
if (
|
|
297
376
|
checkReleaseVersionInBeta(
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
init, AuthType, LiveboardEmbed, HostEvent,
|
|
3
|
+
} from '../index';
|
|
4
|
+
import {
|
|
5
|
+
executeAfterWait,
|
|
6
|
+
getDocumentBody,
|
|
7
|
+
getIFrameEl,
|
|
8
|
+
getRootEl,
|
|
9
|
+
} from '../test/test-utils';
|
|
10
|
+
|
|
11
|
+
describe('Trigger', () => {
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
document.body.innerHTML = getDocumentBody();
|
|
14
|
+
});
|
|
15
|
+
test('should trigger the event', async (done) => {
|
|
16
|
+
init({
|
|
17
|
+
thoughtSpotHost: 'https://tshost',
|
|
18
|
+
authType: AuthType.None,
|
|
19
|
+
});
|
|
20
|
+
const lb = new LiveboardEmbed(getRootEl(), {
|
|
21
|
+
frameParams: {
|
|
22
|
+
width: '100%',
|
|
23
|
+
height: '100%',
|
|
24
|
+
},
|
|
25
|
+
liveboardId: '123',
|
|
26
|
+
});
|
|
27
|
+
const val = await lb.render();
|
|
28
|
+
const iframe = getIFrameEl();
|
|
29
|
+
jest.spyOn(iframe.contentWindow, 'postMessage');
|
|
30
|
+
executeAfterWait(() => {
|
|
31
|
+
lb.trigger(HostEvent.DownloadAsCsv, { vizId: 'testId' });
|
|
32
|
+
expect(iframe.contentWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({
|
|
33
|
+
type: HostEvent.DownloadAsCsv,
|
|
34
|
+
data: { vizId: 'testId' },
|
|
35
|
+
}), 'https://tshost', expect.anything());
|
|
36
|
+
done();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
import * as mixpanelInstance from '../mixpanel-service';
|
|
16
16
|
import { MIXPANEL_EVENT } from '../mixpanel-service';
|
|
17
17
|
import {
|
|
18
|
+
createRootEleForEmbed,
|
|
18
19
|
defaultParamsForPinboardEmbed,
|
|
19
20
|
executeAfterWait,
|
|
20
21
|
expectUrlMatchesWithParams,
|
|
@@ -47,15 +48,6 @@ const tabId2 = 'eca215d4-0d2c-4a55-90e3-d81ef6848ae0';
|
|
|
47
48
|
const thoughtSpotHost = 'tshost';
|
|
48
49
|
const defaultParamsPost = '';
|
|
49
50
|
|
|
50
|
-
const createRootEleForEmbed = () => {
|
|
51
|
-
const rootEle = document.createElement('div');
|
|
52
|
-
rootEle.id = 'myRoot';
|
|
53
|
-
const tsEmbedDiv = document.createElement('div');
|
|
54
|
-
tsEmbedDiv.id = 'tsEmbedDiv';
|
|
55
|
-
rootEle.appendChild(tsEmbedDiv);
|
|
56
|
-
document.body.appendChild(rootEle);
|
|
57
|
-
};
|
|
58
|
-
|
|
59
51
|
beforeAll(() => {
|
|
60
52
|
spyOn(window, 'alert');
|
|
61
53
|
});
|
|
@@ -317,6 +309,46 @@ describe('Unit test case for ts embed', () => {
|
|
|
317
309
|
});
|
|
318
310
|
});
|
|
319
311
|
|
|
312
|
+
test('Runtime filters from view Config should be part of app_init payload when excludeRuntimeFiltersfromURL is undefined', async () => {
|
|
313
|
+
const mockEmbedEventPayload = {
|
|
314
|
+
type: EmbedEvent.APP_INIT,
|
|
315
|
+
data: {},
|
|
316
|
+
};
|
|
317
|
+
const mockRuntimeFilters: RuntimeFilter[] = [
|
|
318
|
+
{
|
|
319
|
+
columnName: 'color',
|
|
320
|
+
operator: RuntimeFilterOp.EQ,
|
|
321
|
+
values: ['blue'],
|
|
322
|
+
},
|
|
323
|
+
];
|
|
324
|
+
|
|
325
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
326
|
+
...defaultViewConfig,
|
|
327
|
+
excludeRuntimeFiltersfromURL: true,
|
|
328
|
+
runtimeFilters: mockRuntimeFilters,
|
|
329
|
+
});
|
|
330
|
+
searchEmbed.render();
|
|
331
|
+
const mockPort: any = {
|
|
332
|
+
postMessage: jest.fn(),
|
|
333
|
+
};
|
|
334
|
+
await executeAfterWait(() => {
|
|
335
|
+
const iframe = getIFrameEl();
|
|
336
|
+
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
337
|
+
});
|
|
338
|
+
expect(mockPort.postMessage).toHaveBeenCalledWith({
|
|
339
|
+
type: EmbedEvent.APP_INIT,
|
|
340
|
+
data: {
|
|
341
|
+
customisations,
|
|
342
|
+
authToken: '',
|
|
343
|
+
runtimeFilterParams: 'col1=color&op1=EQ&val1=blue',
|
|
344
|
+
hiddenHomeLeftNavItems: [],
|
|
345
|
+
hiddenHomepageModules: [],
|
|
346
|
+
hostConfig: undefined,
|
|
347
|
+
reorderedHomepageModules: [],
|
|
348
|
+
},
|
|
349
|
+
});
|
|
350
|
+
});
|
|
351
|
+
|
|
320
352
|
test('Runtime filters from view Config should not be part of app_init payload when excludeRuntimeFiltersfromURL is false', async () => {
|
|
321
353
|
const mockEmbedEventPayload = {
|
|
322
354
|
type: EmbedEvent.APP_INIT,
|
|
@@ -364,7 +396,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
364
396
|
};
|
|
365
397
|
const mockedHiddenHomeLeftNavItems: HomeLeftNavItem[] = [
|
|
366
398
|
HomeLeftNavItem.Home,
|
|
367
|
-
HomeLeftNavItem.
|
|
399
|
+
HomeLeftNavItem.MonitorSubscription,
|
|
368
400
|
];
|
|
369
401
|
|
|
370
402
|
const searchEmbed = new AppEmbed(getRootEl(), {
|
|
@@ -386,7 +418,10 @@ describe('Unit test case for ts embed', () => {
|
|
|
386
418
|
authToken: '',
|
|
387
419
|
hostConfig: undefined,
|
|
388
420
|
runtimeFilterParams: null,
|
|
389
|
-
hiddenHomeLeftNavItems: [
|
|
421
|
+
hiddenHomeLeftNavItems: [
|
|
422
|
+
HomeLeftNavItem.Home,
|
|
423
|
+
HomeLeftNavItem.MonitorSubscription,
|
|
424
|
+
],
|
|
390
425
|
hiddenHomepageModules: [],
|
|
391
426
|
reorderedHomepageModules: [],
|
|
392
427
|
},
|
package/src/embed/ts-embed.ts
CHANGED
|
@@ -167,7 +167,7 @@ export class TsEmbed {
|
|
|
167
167
|
this.thoughtSpotV2Base = getV2BasePath(this.embedConfig);
|
|
168
168
|
this.eventHandlerMap = new Map();
|
|
169
169
|
this.isError = false;
|
|
170
|
-
this.viewConfig = viewConfig;
|
|
170
|
+
this.viewConfig = { excludeRuntimeFiltersfromURL: true, ...viewConfig };
|
|
171
171
|
this.shouldEncodeUrlQueryParams = this.embedConfig.shouldEncodeUrlQueryParams;
|
|
172
172
|
this.registerAppInit();
|
|
173
173
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_EMBED_CREATE, {
|
|
@@ -515,10 +515,7 @@ export class TsEmbed {
|
|
|
515
515
|
const queryParams = this.shouldEncodeUrlQueryParams
|
|
516
516
|
? `?base64UrlEncodedFlags=${getEncodedQueryParamsString(queryString)}`
|
|
517
517
|
: `?${queryString}`;
|
|
518
|
-
|
|
519
|
-
if (!isUndefined(this.embedConfig.enableReactShell)) {
|
|
520
|
-
host = (this.embedConfig.enableReactShell as boolean) ? '/v2' : '/v1';
|
|
521
|
-
}
|
|
518
|
+
const host = this.thoughtSpotHost;
|
|
522
519
|
const path = `${host}/${queryParams}#`;
|
|
523
520
|
return path;
|
|
524
521
|
}
|
|
@@ -556,8 +553,7 @@ export class TsEmbed {
|
|
|
556
553
|
|
|
557
554
|
const {
|
|
558
555
|
height: frameHeight,
|
|
559
|
-
width: frameWidth,
|
|
560
|
-
...restParams
|
|
556
|
+
width: frameWidth, ...restParams
|
|
561
557
|
} = this.viewConfig.frameParams || {};
|
|
562
558
|
const width = getCssDimension(frameWidth || DEFAULT_EMBED_WIDTH);
|
|
563
559
|
const height = getCssDimension(frameHeight || DEFAULT_EMBED_HEIGHT);
|
|
@@ -679,7 +675,7 @@ export class TsEmbed {
|
|
|
679
675
|
protected connectPreRendered(): boolean {
|
|
680
676
|
const preRenderIds = this.getPreRenderIds();
|
|
681
677
|
this.preRenderWrapper = this.preRenderWrapper
|
|
682
|
-
|
|
678
|
+
|| document.getElementById(preRenderIds.wrapper);
|
|
683
679
|
|
|
684
680
|
this.preRenderChild = this.preRenderChild || document.getElementById(preRenderIds.child);
|
|
685
681
|
|
|
@@ -965,6 +961,16 @@ export class TsEmbed {
|
|
|
965
961
|
*/
|
|
966
962
|
public trigger(messageType: HostEvent, data: any = {}): Promise<any> {
|
|
967
963
|
uploadMixpanelEvent(`${MIXPANEL_EVENT.VISUAL_SDK_TRIGGER}-${messageType}`);
|
|
964
|
+
|
|
965
|
+
if (!this.isRendered) {
|
|
966
|
+
this.handleError('Please call render before triggering events');
|
|
967
|
+
return null;
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
if (!messageType) {
|
|
971
|
+
this.handleError('Host event type is undefined');
|
|
972
|
+
return null;
|
|
973
|
+
}
|
|
968
974
|
return processTrigger(this.iFrame, messageType, this.thoughtSpotHost, data);
|
|
969
975
|
}
|
|
970
976
|
|
|
@@ -975,7 +981,7 @@ export class TsEmbed {
|
|
|
975
981
|
*
|
|
976
982
|
* @param args
|
|
977
983
|
*/
|
|
978
|
-
public render(): TsEmbed {
|
|
984
|
+
public async render(): Promise<TsEmbed> {
|
|
979
985
|
this.isRendered = true;
|
|
980
986
|
|
|
981
987
|
return this;
|
|
@@ -1161,8 +1167,8 @@ export class TsEmbed {
|
|
|
1161
1167
|
const elBoundingClient = this.el.getBoundingClientRect();
|
|
1162
1168
|
|
|
1163
1169
|
setStyleProperties(this.preRenderWrapper, {
|
|
1164
|
-
top: `${elBoundingClient.y}px`,
|
|
1165
|
-
left: `${elBoundingClient.x}px`,
|
|
1170
|
+
top: `${elBoundingClient.y + window.scrollY}px`,
|
|
1171
|
+
left: `${elBoundingClient.x + window.scrollX}px`,
|
|
1166
1172
|
width: `${elBoundingClient.width}px`,
|
|
1167
1173
|
height: `${elBoundingClient.height}px`,
|
|
1168
1174
|
});
|
|
@@ -1183,8 +1189,6 @@ export class TsEmbed {
|
|
|
1183
1189
|
pointerEvents: 'none',
|
|
1184
1190
|
zIndex: '-1000',
|
|
1185
1191
|
position: 'absolute ',
|
|
1186
|
-
top: '0',
|
|
1187
|
-
left: '0',
|
|
1188
1192
|
};
|
|
1189
1193
|
setStyleProperties(this.preRenderWrapper, preRenderHideStyles);
|
|
1190
1194
|
|
|
@@ -1235,7 +1239,7 @@ export class V1Embed extends TsEmbed {
|
|
|
1235
1239
|
|
|
1236
1240
|
constructor(domSelector: DOMSelector, viewConfig: ViewConfig) {
|
|
1237
1241
|
super(domSelector, viewConfig);
|
|
1238
|
-
this.viewConfig = viewConfig;
|
|
1242
|
+
this.viewConfig = { excludeRuntimeFiltersfromURL: true, ...viewConfig };
|
|
1239
1243
|
}
|
|
1240
1244
|
|
|
1241
1245
|
/**
|
package/src/index.ts
CHANGED
|
@@ -46,11 +46,15 @@ import {
|
|
|
46
46
|
ContextMenuTriggerOptions,
|
|
47
47
|
RuntimeParameter,
|
|
48
48
|
LogLevel,
|
|
49
|
+
VizPoint,
|
|
50
|
+
CustomActionPayload,
|
|
49
51
|
} from './types';
|
|
50
52
|
import { CustomCssVariables } from './css-variables';
|
|
51
53
|
import { SageEmbed, SageViewConfig } from './embed/sage';
|
|
52
|
-
import { AnswerService } from './utils/graphql/answerService/answerService';
|
|
54
|
+
import { AnswerService, SessionInterface, UnderlyingDataPoint } from './utils/graphql/answerService/answerService';
|
|
53
55
|
import { getEmbedConfig } from './embed/embedConfig';
|
|
56
|
+
import { uploadMixpanelEvent, MIXPANEL_EVENT } from './mixpanel-service';
|
|
57
|
+
import { tokenizedFetch } from './tokenizedFetch';
|
|
54
58
|
|
|
55
59
|
export {
|
|
56
60
|
init,
|
|
@@ -62,6 +66,7 @@ export {
|
|
|
62
66
|
exportTMLInput,
|
|
63
67
|
getEmbedConfig as getInitConfig,
|
|
64
68
|
getSessionInfo,
|
|
69
|
+
tokenizedFetch,
|
|
65
70
|
SearchEmbed,
|
|
66
71
|
SearchBarEmbed,
|
|
67
72
|
PinboardEmbed,
|
|
@@ -74,6 +79,8 @@ export {
|
|
|
74
79
|
AuthEventEmitter,
|
|
75
80
|
AnswerService,
|
|
76
81
|
// types
|
|
82
|
+
SessionInterface,
|
|
83
|
+
UnderlyingDataPoint,
|
|
77
84
|
Page,
|
|
78
85
|
AuthType,
|
|
79
86
|
RuntimeFilter,
|
|
@@ -103,4 +110,8 @@ export {
|
|
|
103
110
|
CustomCssVariables,
|
|
104
111
|
RuntimeParameter,
|
|
105
112
|
LogLevel,
|
|
113
|
+
uploadMixpanelEvent,
|
|
114
|
+
MIXPANEL_EVENT,
|
|
115
|
+
VizPoint,
|
|
116
|
+
CustomActionPayload,
|
|
106
117
|
};
|
package/src/mixpanel-service.ts
CHANGED
|
@@ -18,6 +18,7 @@ export const MIXPANEL_EVENT = {
|
|
|
18
18
|
VISUAL_SDK_ON: 'visual-sdk-on',
|
|
19
19
|
VISUAL_SDK_IFRAME_LOAD_PERFORMANCE: 'visual-sdk-iframe-load-performance',
|
|
20
20
|
VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',
|
|
21
|
+
VERCEL_INTEGRATION_COMPLETED: 'vercel-integration-completed',
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
let isMixpanelInitialized = false;
|
package/src/react/index.spec.tsx
CHANGED
package/src/test/test-utils.ts
CHANGED
|
@@ -116,3 +116,12 @@ export const expectUrlMatch = (source: string, target: string) => {
|
|
|
116
116
|
const targetUrl = new URL(target);
|
|
117
117
|
expect(sourceUrl.hash).toBe(targetUrl.hash);
|
|
118
118
|
};
|
|
119
|
+
|
|
120
|
+
export const createRootEleForEmbed = () => {
|
|
121
|
+
const rootEle = document.createElement('div');
|
|
122
|
+
rootEle.id = 'myRoot';
|
|
123
|
+
const tsEmbedDiv = document.createElement('div');
|
|
124
|
+
tsEmbedDiv.id = 'tsEmbedDiv';
|
|
125
|
+
rootEle.appendChild(tsEmbedDiv);
|
|
126
|
+
document.body.appendChild(rootEle);
|
|
127
|
+
};
|
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) {
|