@thoughtspot/visual-embed-sdk 1.45.3-mcp.2 → 1.46.0
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/auth.d.ts +35 -2
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +35 -2
- package/cjs/src/auth.js.map +1 -1
- 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 +87 -119
- 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.map +1 -1
- package/cjs/src/index.d.ts +2 -3
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +1 -3
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/types.d.ts +55 -54
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +55 -52
- package/cjs/src/types.js.map +1 -1
- package/dist/{index-0serzuii.js → index-BQvLEoxp.js} +1 -1
- package/dist/src/auth.d.ts +35 -2
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +55 -54
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +98 -62
- package/dist/tsembed-react.js +97 -61
- package/dist/tsembed.es.js +99 -126
- package/dist/tsembed.js +97 -125
- package/dist/visual-embed-sdk-react-full.d.ts +90 -53
- package/dist/visual-embed-sdk-react.d.ts +88 -51
- package/dist/visual-embed-sdk.d.ts +90 -56
- package/lib/package.json +2 -2
- package/lib/src/auth.d.ts +35 -2
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +35 -2
- package/lib/src/auth.js.map +1 -1
- 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 +87 -119
- 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.map +1 -1
- package/lib/src/index.d.ts +2 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +0 -1
- package/lib/src/index.js.map +1 -1
- package/lib/src/types.d.ts +55 -54
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +55 -52
- package/lib/src/types.js.map +1 -1
- package/package.json +3 -3
- package/src/auth.ts +35 -2
- package/src/embed/app.spec.ts +171 -211
- package/src/embed/app.ts +15 -10
- package/src/embed/base.ts +0 -1
- package/src/index.ts +0 -3
- package/src/types.ts +55 -54
- package/cjs/src/embed/auto-frame-renderer.d.ts +0 -3
- package/cjs/src/embed/auto-frame-renderer.d.ts.map +0 -1
- package/cjs/src/embed/auto-frame-renderer.js +0 -70
- package/cjs/src/embed/auto-frame-renderer.js.map +0 -1
- package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +0 -2
- package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +0 -1
- package/cjs/src/embed/searchEmbed-basic-auth.spec.js +0 -104
- package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +0 -1
- package/cjs/src/utils/answerService/answerService.d.ts +0 -34
- package/cjs/src/utils/answerService/answerService.d.ts.map +0 -1
- package/cjs/src/utils/answerService/answerService.js +0 -142
- package/cjs/src/utils/answerService/answerService.js.map +0 -1
- package/cjs/src/utils/answerService/answerService.spec.d.ts +0 -1
- package/cjs/src/utils/answerService/answerService.spec.d.ts.map +0 -1
- package/cjs/src/utils/answerService/answerService.spec.js +0 -1
- package/cjs/src/utils/answerService/answerService.spec.js.map +0 -1
- package/cjs/src/utils/answerService/graphql-queries.d.ts +0 -6
- package/cjs/src/utils/answerService/graphql-queries.d.ts.map +0 -1
- package/cjs/src/utils/answerService/graphql-queries.js +0 -123
- package/cjs/src/utils/answerService/graphql-queries.js.map +0 -1
- package/cjs/src/utils/answerService.d.ts +0 -10
- package/cjs/src/utils/answerService.d.ts.map +0 -1
- package/cjs/src/utils/answerService.js +0 -61
- package/cjs/src/utils/answerService.js.map +0 -1
- package/cjs/src/utils/answerService.spec.d.ts +0 -2
- package/cjs/src/utils/answerService.spec.d.ts.map +0 -1
- package/cjs/src/utils/answerService.spec.js +0 -31
- package/cjs/src/utils/answerService.spec.js.map +0 -1
- package/cjs/src/utils/authService.d.ts +0 -37
- package/cjs/src/utils/authService.d.ts.map +0 -1
- package/cjs/src/utils/authService.js +0 -106
- package/cjs/src/utils/authService.js.map +0 -1
- package/cjs/src/utils/authService.spec.d.ts +0 -2
- package/cjs/src/utils/authService.spec.d.ts.map +0 -1
- package/cjs/src/utils/authService.spec.js +0 -72
- package/cjs/src/utils/authService.spec.js.map +0 -1
- package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts +0 -5
- package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts.map +0 -1
- package/cjs/src/utils/graphql/answerService/graphql-queries.js +0 -80
- package/cjs/src/utils/graphql/answerService/graphql-queries.js.map +0 -1
- package/cjs/src/utils/graphql/conversationService/conversation-queries.d.ts +0 -3
- package/cjs/src/utils/graphql/conversationService/conversation-queries.d.ts.map +0 -1
- package/cjs/src/utils/graphql/conversationService/conversation-queries.js +0 -318
- package/cjs/src/utils/graphql/conversationService/conversation-queries.js.map +0 -1
- package/cjs/src/utils/graphql/conversationService/conversation-service.d.ts +0 -12
- package/cjs/src/utils/graphql/conversationService/conversation-service.d.ts.map +0 -1
- package/cjs/src/utils/graphql/conversationService/conversation-service.js +0 -89
- package/cjs/src/utils/graphql/conversationService/conversation-service.js.map +0 -1
- package/cjs/src/utils/graphql/spotterService/conversation-queries.d.ts +0 -3
- package/cjs/src/utils/graphql/spotterService/conversation-queries.d.ts.map +0 -1
- package/cjs/src/utils/graphql/spotterService/conversation-queries.js +0 -318
- package/cjs/src/utils/graphql/spotterService/conversation-queries.js.map +0 -1
- package/cjs/src/utils/graphql/spotterService/conversation-service.d.ts +0 -12
- package/cjs/src/utils/graphql/spotterService/conversation-service.d.ts.map +0 -1
- package/cjs/src/utils/graphql/spotterService/conversation-service.js +0 -89
- package/cjs/src/utils/graphql/spotterService/conversation-service.js.map +0 -1
- package/cjs/src/utils/graphql/spotterService/nls-answer-queries.d.ts +0 -2
- package/cjs/src/utils/graphql/spotterService/nls-answer-queries.d.ts.map +0 -1
- package/cjs/src/utils/graphql/spotterService/nls-answer-queries.js +0 -403
- package/cjs/src/utils/graphql/spotterService/nls-answer-queries.js.map +0 -1
- package/cjs/src/utils/graphql/spotterService/nls-answer-service.d.ts +0 -12
- package/cjs/src/utils/graphql/spotterService/nls-answer-service.d.ts.map +0 -1
- package/cjs/src/utils/graphql/spotterService/nls-answer-service.js +0 -55
- package/cjs/src/utils/graphql/spotterService/nls-answer-service.js.map +0 -1
- package/dist/index-CqrIh3Vj.js +0 -7370
- package/dist/index-aFN9fe8V.js +0 -7371
- package/dist/src/embed/auto-frame-renderer.d.ts +0 -3
- package/dist/src/embed/auto-frame-renderer.d.ts.map +0 -1
- package/lib/src/embed/auto-frame-renderer.d.ts +0 -3
- package/lib/src/embed/auto-frame-renderer.d.ts.map +0 -1
- package/lib/src/embed/auto-frame-renderer.js +0 -66
- package/lib/src/embed/auto-frame-renderer.js.map +0 -1
- package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts +0 -2
- package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts.map +0 -1
- package/lib/src/embed/searchEmbed-basic-auth.spec.js +0 -101
- package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +0 -1
- package/lib/src/utils/graphql/conversationService/conversation-queries.d.ts +0 -3
- package/lib/src/utils/graphql/conversationService/conversation-queries.d.ts.map +0 -1
- package/lib/src/utils/graphql/conversationService/conversation-queries.js +0 -315
- package/lib/src/utils/graphql/conversationService/conversation-queries.js.map +0 -1
- package/lib/src/utils/graphql/conversationService/conversation-service.d.ts +0 -12
- package/lib/src/utils/graphql/conversationService/conversation-service.d.ts.map +0 -1
- package/lib/src/utils/graphql/conversationService/conversation-service.js +0 -84
- package/lib/src/utils/graphql/conversationService/conversation-service.js.map +0 -1
- package/lib/src/utils/graphql/spotterService/conversation-queries.d.ts +0 -3
- package/lib/src/utils/graphql/spotterService/conversation-queries.d.ts.map +0 -1
- package/lib/src/utils/graphql/spotterService/conversation-queries.js +0 -315
- package/lib/src/utils/graphql/spotterService/conversation-queries.js.map +0 -1
- package/lib/src/utils/graphql/spotterService/conversation-service.d.ts +0 -12
- package/lib/src/utils/graphql/spotterService/conversation-service.d.ts.map +0 -1
- package/lib/src/utils/graphql/spotterService/conversation-service.js +0 -84
- package/lib/src/utils/graphql/spotterService/conversation-service.js.map +0 -1
- package/lib/src/utils/graphql/spotterService/nls-answer-queries.d.ts +0 -2
- package/lib/src/utils/graphql/spotterService/nls-answer-queries.d.ts.map +0 -1
- package/lib/src/utils/graphql/spotterService/nls-answer-queries.js +0 -400
- package/lib/src/utils/graphql/spotterService/nls-answer-queries.js.map +0 -1
- package/lib/src/utils/graphql/spotterService/nls-answer-service.d.ts +0 -12
- package/lib/src/utils/graphql/spotterService/nls-answer-service.d.ts.map +0 -1
- package/lib/src/utils/graphql/spotterService/nls-answer-service.js +0 -50
- package/lib/src/utils/graphql/spotterService/nls-answer-service.js.map +0 -1
- package/lib/src/visual-embed-sdk.d.ts +0 -7186
- package/src/embed/auto-frame-renderer.ts +0 -78
package/src/types.ts
CHANGED
|
@@ -1163,8 +1163,6 @@ export interface BaseViewConfig extends ApiInterceptFlags {
|
|
|
1163
1163
|
useHostEventsV2?: boolean;
|
|
1164
1164
|
}
|
|
1165
1165
|
|
|
1166
|
-
export interface AutoMCPFrameRendererViewConfig extends BaseViewConfig {}
|
|
1167
|
-
|
|
1168
1166
|
/**
|
|
1169
1167
|
* The configuration object for Home page embeds configs.
|
|
1170
1168
|
*/
|
|
@@ -2861,65 +2859,69 @@ export enum EmbedEvent {
|
|
|
2861
2859
|
Rename = 'rename',
|
|
2862
2860
|
/**
|
|
2863
2861
|
*
|
|
2864
|
-
* This event
|
|
2865
|
-
*
|
|
2866
|
-
*
|
|
2867
|
-
*
|
|
2868
|
-
|
|
2869
|
-
*
|
|
2870
|
-
*
|
|
2871
|
-
*
|
|
2862
|
+
* This event allows developers to intercept search execution
|
|
2863
|
+
* and implement logic that decides whether Search Data should return
|
|
2864
|
+
* data or block the search operation.
|
|
2865
|
+
*
|
|
2866
|
+
* **Prerequisite**: Set`isOnBeforeGetVizDataInterceptEnabled` to `true`
|
|
2867
|
+
* to ensure that `EmbedEvent.OnBeforeGetVizDataIntercept` is emitted
|
|
2868
|
+
* when the embedding application user tries to run a search query.
|
|
2869
|
+
*
|
|
2870
|
+
* This framework applies only to `AppEmbed` and `SearchEmbed`.
|
|
2871
|
+
* @param - Includes the following parameters:
|
|
2872
2872
|
* - `payload`: The payload received from the embed related to the Data API call.
|
|
2873
2873
|
* - `responder`: Contains elements that let developers define whether ThoughtSpot
|
|
2874
|
-
*
|
|
2875
|
-
* should be shown to the user.
|
|
2876
|
-
*
|
|
2877
|
-
* `execute` - When `execute` returns `true`, the search will be run.
|
|
2878
|
-
* When `execute` returns `false`, the search will not be executed.
|
|
2874
|
+
* will run or block the search operation, and if blocked, which error message to provide.
|
|
2879
2875
|
*
|
|
2880
|
-
* `
|
|
2881
|
-
*
|
|
2876
|
+
* `execute` - When `execute` returns `true`, the search is run.
|
|
2877
|
+
* When `execute` returns `false`, the search is not executed.
|
|
2882
2878
|
*
|
|
2883
|
-
* `
|
|
2884
|
-
* `
|
|
2879
|
+
* `error` - Developers can customize the user-facing error message when `execute`
|
|
2880
|
+
* is `false` by using the `error` parameters in `responder`.
|
|
2881
|
+
* `errorText` - The error message text shown to the user.
|
|
2885
2882
|
* @version SDK : 1.29.0 | ThoughtSpot: 10.3.0.cl
|
|
2886
2883
|
* @example
|
|
2887
|
-
|
|
2888
|
-
*
|
|
2889
|
-
*
|
|
2890
|
-
*
|
|
2891
|
-
*
|
|
2892
|
-
*
|
|
2893
|
-
*
|
|
2894
|
-
*
|
|
2895
|
-
*
|
|
2896
|
-
*
|
|
2897
|
-
*
|
|
2898
|
-
*
|
|
2899
|
-
*
|
|
2900
|
-
* })
|
|
2884
|
+
*
|
|
2885
|
+
* This example blocks search operation and returns a custom error message:
|
|
2886
|
+
* ```js
|
|
2887
|
+
* embed.on(EmbedEvent.OnBeforeGetVizDataIntercept, (payload, responder) => {
|
|
2888
|
+
* responder({
|
|
2889
|
+
* data: {
|
|
2890
|
+
* execute: false,
|
|
2891
|
+
* error: {
|
|
2892
|
+
* // Provide a custom error message to explain why the search did not run.
|
|
2893
|
+
* errorText: 'This search query cannot be run. Please contact your administrator for more details.',
|
|
2894
|
+
* },
|
|
2895
|
+
* },
|
|
2896
|
+
* });
|
|
2897
|
+
* });
|
|
2901
2898
|
* ```
|
|
2899
|
+
* @example
|
|
2902
2900
|
*
|
|
2903
|
-
|
|
2904
|
-
*
|
|
2905
|
-
*
|
|
2906
|
-
*
|
|
2907
|
-
* responder
|
|
2908
|
-
*
|
|
2909
|
-
*
|
|
2910
|
-
*
|
|
2911
|
-
*
|
|
2912
|
-
*
|
|
2913
|
-
*
|
|
2914
|
-
*
|
|
2915
|
-
*
|
|
2916
|
-
*
|
|
2917
|
-
*
|
|
2918
|
-
*
|
|
2919
|
-
*
|
|
2920
|
-
*
|
|
2921
|
-
*
|
|
2922
|
-
|
|
2901
|
+
* This example allows the search operation to run
|
|
2902
|
+
* unless the query contains both `sales` and `county`,
|
|
2903
|
+
* and returns a custom error message if the query is rejected:
|
|
2904
|
+
* ```js
|
|
2905
|
+
* embed.on(EmbedEvent.OnBeforeGetVizDataIntercept, (payload, responder) => {
|
|
2906
|
+
* // Record the search query submitted by the end user.
|
|
2907
|
+
* const query = payload.data.data.answer.search_query;
|
|
2908
|
+
*
|
|
2909
|
+
* responder({
|
|
2910
|
+
* data: {
|
|
2911
|
+
* // Returns true as long as the query does not include both `sales` and `county`.
|
|
2912
|
+
* execute: !(query.includes('sales') && query.includes('county')),
|
|
2913
|
+
* error: {
|
|
2914
|
+
* // Provide a custom error message when the query is blocked by your logic.
|
|
2915
|
+
* errorText:
|
|
2916
|
+
* "You can't use this query: "
|
|
2917
|
+
* + query
|
|
2918
|
+
* + ". The 'sales' measure can never be used at the 'county' level. "
|
|
2919
|
+
* + "Please try another measure or remove 'county' from your search.",
|
|
2920
|
+
* },
|
|
2921
|
+
* },
|
|
2922
|
+
* });
|
|
2923
|
+
* });
|
|
2924
|
+
* ```
|
|
2923
2925
|
*/
|
|
2924
2926
|
OnBeforeGetVizDataIntercept = 'onBeforeGetVizDataIntercept',
|
|
2925
2927
|
/**
|
|
@@ -4679,7 +4681,6 @@ export enum DataSourceVisualMode {
|
|
|
4679
4681
|
*/
|
|
4680
4682
|
|
|
4681
4683
|
export enum Param {
|
|
4682
|
-
Tsmcp = 'tsmcp',
|
|
4683
4684
|
EmbedApp = 'embedApp',
|
|
4684
4685
|
DataSources = 'dataSources',
|
|
4685
4686
|
DataSourceMode = 'dataSourceMode',
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-frame-renderer.d.ts","sourceRoot":"","sources":["../../../src/embed/auto-frame-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAS,MAAM,UAAU,CAAC;AAKjE,wBAAgB,yBAAyB,CAAC,UAAU,GAAE,8BAAmC,oBA2BxF"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.startAutoMCPFrameRenderer = void 0;
|
|
4
|
-
const types_1 = require("../types");
|
|
5
|
-
const ts_embed_1 = require("./ts-embed");
|
|
6
|
-
const utils_1 = require("../utils");
|
|
7
|
-
function startAutoMCPFrameRenderer(viewConfig = {}) {
|
|
8
|
-
const replaceWithMCPIframe = (iframe) => {
|
|
9
|
-
const autoMCPFrameRenderer = new AutoFrameRenderer(viewConfig);
|
|
10
|
-
autoMCPFrameRenderer.replaceIframe(iframe);
|
|
11
|
-
};
|
|
12
|
-
const observer = new MutationObserver((mutations) => {
|
|
13
|
-
for (const mutation of mutations) {
|
|
14
|
-
for (const node of Array.from(mutation.addedNodes)) {
|
|
15
|
-
if (node instanceof HTMLIFrameElement && isTSMCPIframe(node)) {
|
|
16
|
-
replaceWithMCPIframe(node);
|
|
17
|
-
}
|
|
18
|
-
if (node instanceof HTMLElement) {
|
|
19
|
-
node.querySelectorAll('iframe').forEach((iframe) => {
|
|
20
|
-
if (isTSMCPIframe(iframe)) {
|
|
21
|
-
replaceWithMCPIframe(iframe);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
observer.observe(document.body, { childList: true, subtree: true });
|
|
29
|
-
return observer;
|
|
30
|
-
}
|
|
31
|
-
exports.startAutoMCPFrameRenderer = startAutoMCPFrameRenderer;
|
|
32
|
-
function isTSMCPIframe(iframe) {
|
|
33
|
-
const src = iframe.src;
|
|
34
|
-
return src.includes(`${types_1.Param.Tsmcp}=true`);
|
|
35
|
-
}
|
|
36
|
-
class AutoFrameRenderer extends ts_embed_1.TsEmbed {
|
|
37
|
-
constructor(viewConfig) {
|
|
38
|
-
viewConfig.embedComponentType = 'auto-frame-renderer';
|
|
39
|
-
const container = document.createElement('div');
|
|
40
|
-
super(container, viewConfig);
|
|
41
|
-
this.viewConfig = viewConfig;
|
|
42
|
-
}
|
|
43
|
-
getMCPIframeSrc(sourceSrc) {
|
|
44
|
-
const queryParams = this.getEmbedParamsObject();
|
|
45
|
-
const sourceURL = new URL(sourceSrc);
|
|
46
|
-
const existingQueryParams = sourceURL.searchParams;
|
|
47
|
-
// convert existing query params to an object
|
|
48
|
-
const existingQueryParamsObject = Object.fromEntries(existingQueryParams);
|
|
49
|
-
delete existingQueryParamsObject[types_1.Param.Tsmcp];
|
|
50
|
-
// merge the existing query params with the new query params
|
|
51
|
-
const mergedQueryParams = { ...queryParams, ...existingQueryParamsObject };
|
|
52
|
-
const mergedQueryParamsString = (0, utils_1.getQueryParamString)(mergedQueryParams);
|
|
53
|
-
const frameSrc = `${sourceURL.origin}${sourceURL.pathname}?${mergedQueryParamsString}/${sourceURL.hash}`;
|
|
54
|
-
return frameSrc;
|
|
55
|
-
}
|
|
56
|
-
handleInsertionIntoDOM(child) {
|
|
57
|
-
if (this.frameToReplace) {
|
|
58
|
-
this.frameToReplace.replaceWith(child);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
super.handleInsertionIntoDOM(child);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
async replaceIframe(iframe) {
|
|
65
|
-
this.frameToReplace = iframe;
|
|
66
|
-
const src = this.getMCPIframeSrc(iframe.src);
|
|
67
|
-
await this.renderIFrame(src);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=auto-frame-renderer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-frame-renderer.js","sourceRoot":"","sources":["../../../src/embed/auto-frame-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"searchEmbed-basic-auth.spec.d.ts","sourceRoot":"","sources":["../../../src/embed/searchEmbed-basic-auth.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const search_1 = require("./search");
|
|
5
|
-
const baseInstance = tslib_1.__importStar(require("./base"));
|
|
6
|
-
const authService = tslib_1.__importStar(require("../utils/authService"));
|
|
7
|
-
const authInstance = tslib_1.__importStar(require("../auth"));
|
|
8
|
-
const config = tslib_1.__importStar(require("../config"));
|
|
9
|
-
const embedConfigInstance = tslib_1.__importStar(require("./embedConfig"));
|
|
10
|
-
const index_1 = require("../index");
|
|
11
|
-
const types_1 = require("../types");
|
|
12
|
-
const test_utils_1 = require("../test/test-utils");
|
|
13
|
-
const auth_spec_1 = require("../auth.spec");
|
|
14
|
-
const thoughtSpotHost = 'tshost';
|
|
15
|
-
(0, index_1.init)({
|
|
16
|
-
thoughtSpotHost,
|
|
17
|
-
authType: types_1.AuthType.Basic,
|
|
18
|
-
username: 'tsadmin',
|
|
19
|
-
password: 'admin',
|
|
20
|
-
});
|
|
21
|
-
describe('Search embed tests when authType is Basic', () => {
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
24
|
-
* @param version
|
|
25
|
-
*/
|
|
26
|
-
function setupVersion(version) {
|
|
27
|
-
jest.spyOn(window, 'addEventListener').mockImplementation((event, handler, options) => {
|
|
28
|
-
handler({
|
|
29
|
-
data: {
|
|
30
|
-
type: 'xyz',
|
|
31
|
-
},
|
|
32
|
-
ports: [3000],
|
|
33
|
-
source: null,
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
jest.spyOn(authService, 'fetchSessionInfoService').mockImplementation(async () => ({
|
|
37
|
-
json: () => ({
|
|
38
|
-
...auth_spec_1.mockSessionInfo,
|
|
39
|
-
releaseVersion: version,
|
|
40
|
-
}),
|
|
41
|
-
status: 200,
|
|
42
|
-
}));
|
|
43
|
-
jest.spyOn(authInstance, 'getReleaseVersion').mockReturnValue(version);
|
|
44
|
-
}
|
|
45
|
-
beforeEach(() => {
|
|
46
|
-
document.body.innerHTML = (0, test_utils_1.getDocumentBody)();
|
|
47
|
-
jest.spyOn(baseInstance, 'getAuthPromise').mockResolvedValue(true);
|
|
48
|
-
});
|
|
49
|
-
afterEach(() => {
|
|
50
|
-
jest.clearAllMocks();
|
|
51
|
-
});
|
|
52
|
-
test('when releaseVersion is empty', async () => {
|
|
53
|
-
setupVersion('');
|
|
54
|
-
const mockAlert = spyOn(window, 'alert');
|
|
55
|
-
const searchEmbed = new search_1.SearchEmbed((0, test_utils_1.getRootEl)(), {});
|
|
56
|
-
await searchEmbed.render();
|
|
57
|
-
expect(mockAlert).not.toBeCalled();
|
|
58
|
-
});
|
|
59
|
-
test("when releaseVersion is '7.0.1.cl' ", async () => {
|
|
60
|
-
setupVersion('7.0.1.cl');
|
|
61
|
-
const mockAlert = jest.spyOn(window, 'alert');
|
|
62
|
-
const searchEmbed = new search_1.SearchEmbed((0, test_utils_1.getRootEl)(), {});
|
|
63
|
-
await searchEmbed.render();
|
|
64
|
-
expect(mockAlert).not.toBeCalled();
|
|
65
|
-
});
|
|
66
|
-
test('when releaseVersion is above 8.4.0.sw', async () => {
|
|
67
|
-
setupVersion('8.4.0.sw');
|
|
68
|
-
const mockAlert = jest.spyOn(window, 'alert');
|
|
69
|
-
const searchEmbed = new search_1.SearchEmbed((0, test_utils_1.getRootEl)(), {});
|
|
70
|
-
await searchEmbed.render();
|
|
71
|
-
expect(mockAlert).not.toBeCalled();
|
|
72
|
-
});
|
|
73
|
-
test('releaseVersion is above 8.4.0.sw', async () => {
|
|
74
|
-
setupVersion('8.8.0.sw');
|
|
75
|
-
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
|
|
76
|
-
const mockAlert = jest.spyOn(window, 'alert');
|
|
77
|
-
const searchEmbed = new search_1.SearchEmbed((0, test_utils_1.getRootEl)(), {});
|
|
78
|
-
await searchEmbed.render();
|
|
79
|
-
expect(mockAlert).not.toBeCalled();
|
|
80
|
-
});
|
|
81
|
-
test('Alert should not appear when suppressSearchEmbedBetaWarning is true and releaseVersion is ts7.dec.cl', async () => {
|
|
82
|
-
setupVersion('ts7.dec.cl');
|
|
83
|
-
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
|
|
84
|
-
jest.spyOn(embedConfigInstance, 'getEmbedConfig').mockReturnValue({
|
|
85
|
-
suppressSearchEmbedBetaWarning: true,
|
|
86
|
-
});
|
|
87
|
-
const mockAlert = jest.spyOn(window, 'alert');
|
|
88
|
-
const searchEmbed = new search_1.SearchEmbed((0, test_utils_1.getRootEl)(), {});
|
|
89
|
-
await searchEmbed.render();
|
|
90
|
-
expect(mockAlert).not.toBeCalled();
|
|
91
|
-
});
|
|
92
|
-
test('Alert should not appear when suppressSearchEmbedBetaWarning is true and releaseVersion is 8.4.0.sw', async () => {
|
|
93
|
-
setupVersion('8.4.0.sw');
|
|
94
|
-
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
|
|
95
|
-
jest.spyOn(embedConfigInstance, 'getEmbedConfig').mockReturnValue({
|
|
96
|
-
suppressSearchEmbedBetaWarning: true,
|
|
97
|
-
});
|
|
98
|
-
const mockAlert = jest.spyOn(window, 'alert');
|
|
99
|
-
const searchEmbed = new search_1.SearchEmbed((0, test_utils_1.getRootEl)(), {});
|
|
100
|
-
await searchEmbed.render();
|
|
101
|
-
expect(mockAlert).not.toBeCalled();
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
//# sourceMappingURL=searchEmbed-basic-auth.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"searchEmbed-basic-auth.spec.js","sourceRoot":"","sources":["../../../src/embed/searchEmbed-basic-auth.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export interface SessionInterface {
|
|
2
|
-
sessionId: string;
|
|
3
|
-
genNo: number;
|
|
4
|
-
acSession: {
|
|
5
|
-
sessionId: string;
|
|
6
|
-
genNo: number;
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
export declare enum OperationType {
|
|
10
|
-
GetChartWithData = "GetChartWithData",
|
|
11
|
-
GetTableWithHeadlineData = "GetTableWithHeadlineData"
|
|
12
|
-
}
|
|
13
|
-
export declare class AnswerService {
|
|
14
|
-
private session;
|
|
15
|
-
private answer;
|
|
16
|
-
private thoughtSpotHost;
|
|
17
|
-
constructor(session: SessionInterface, answer: any, thoughtSpotHost: string);
|
|
18
|
-
getSourceDetail(): Promise<any>;
|
|
19
|
-
removeColumns(columnIds: string[]): Promise<any>;
|
|
20
|
-
addColumns(columnIds: string[]): Promise<any>;
|
|
21
|
-
fetchData(offset?: number, size?: number): Promise<{
|
|
22
|
-
columns: any;
|
|
23
|
-
data: any;
|
|
24
|
-
}>;
|
|
25
|
-
getUnderlyingDataForPoint(selectedPoint: {
|
|
26
|
-
columnId: string;
|
|
27
|
-
dataValue: any;
|
|
28
|
-
}[], outputColumnNames: string[], offset: number, size: number): Promise<{
|
|
29
|
-
columns: any;
|
|
30
|
-
data: any;
|
|
31
|
-
}>;
|
|
32
|
-
executeQuery(query: string, variables: any): Promise<any>;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=answerService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"answerService.d.ts","sourceRoot":"","sources":["../../../../src/utils/answerService/answerService.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAGD,oBAAY,aAAa;IACrB,gBAAgB,qBAAqB;IACrC,wBAAwB,6BAA6B;CACxD;AAED,qBAAa,aAAa;IAElB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;gBAFf,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,GAAG,EACX,eAAe,EAAE,MAAM;IAKtB,eAAe;IAWf,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE;IASjC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;IAS9B,SAAS,CAAC,MAAM,SAAI,EAAE,IAAI,SAAO;;;;IAmBjC,yBAAyB,CAClC,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAA;KAAE,EAAE,EACrD,iBAAiB,EAAE,MAAM,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;;;;IA4BH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG;CAa1D"}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AnswerService = exports.OperationType = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const utils_1 = require("../../utils");
|
|
6
|
-
const queries = tslib_1.__importStar(require("./graphql-queries"));
|
|
7
|
-
// eslint-disable-next-line no-shadow
|
|
8
|
-
var OperationType;
|
|
9
|
-
(function (OperationType) {
|
|
10
|
-
OperationType["GetChartWithData"] = "GetChartWithData";
|
|
11
|
-
OperationType["GetTableWithHeadlineData"] = "GetTableWithHeadlineData";
|
|
12
|
-
})(OperationType = exports.OperationType || (exports.OperationType = {}));
|
|
13
|
-
class AnswerService {
|
|
14
|
-
constructor(session, answer, thoughtSpotHost) {
|
|
15
|
-
this.session = session;
|
|
16
|
-
this.answer = answer;
|
|
17
|
-
this.thoughtSpotHost = thoughtSpotHost;
|
|
18
|
-
this.session = (0, utils_1.removeTypename)(session);
|
|
19
|
-
}
|
|
20
|
-
async getSourceDetail() {
|
|
21
|
-
const details = await graphqlQuery({
|
|
22
|
-
query: queries.getSourceDetail,
|
|
23
|
-
variables: {
|
|
24
|
-
ids: [this.answer.sources[0].header.guid],
|
|
25
|
-
},
|
|
26
|
-
thoughtSpotHost: this.thoughtSpotHost,
|
|
27
|
-
});
|
|
28
|
-
return details[0];
|
|
29
|
-
}
|
|
30
|
-
async removeColumns(columnIds) {
|
|
31
|
-
return this.executeQuery(queries.removeColumns, {
|
|
32
|
-
logicalColumnIds: columnIds,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
async addColumns(columnIds) {
|
|
36
|
-
return this.executeQuery(queries.addColumns, {
|
|
37
|
-
columns: columnIds.map((colId) => ({ logicalColumnId: colId })),
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
async fetchData(offset = 0, size = 1000) {
|
|
41
|
-
const { answer } = await this.executeQuery(queries.getAnswerData, {
|
|
42
|
-
deadline: 0,
|
|
43
|
-
dataPaginationParams: {
|
|
44
|
-
isClientPaginated: true,
|
|
45
|
-
offset,
|
|
46
|
-
size,
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
const { columns, data } = answer.visualizations[0];
|
|
50
|
-
return {
|
|
51
|
-
columns,
|
|
52
|
-
data,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
async getUnderlyingDataForPoint(selectedPoint, outputColumnNames, offset, size) {
|
|
56
|
-
const sourceDetail = await this.getSourceDetail();
|
|
57
|
-
const ouputColumnGuids = getGuidsFromColumnNames(sourceDetail, outputColumnNames);
|
|
58
|
-
const unAggAnswer = await graphqlQuery({
|
|
59
|
-
query: queries.getUnaggregatedAnswerSession,
|
|
60
|
-
variables: {
|
|
61
|
-
session: this.session,
|
|
62
|
-
columns: selectedPoint,
|
|
63
|
-
},
|
|
64
|
-
thoughtSpotHost: this.thoughtSpotHost,
|
|
65
|
-
});
|
|
66
|
-
const unaggAnswerSession = new AnswerService(unAggAnswer.id, unAggAnswer.answer, this.thoughtSpotHost);
|
|
67
|
-
const currentColumns = new Set(unAggAnswer.answer.visualizations[0].columns.map((c) => c.column.referencedColumns[0].guid));
|
|
68
|
-
const columnsToAdd = [...ouputColumnGuids].filter((col) => !currentColumns.has(col));
|
|
69
|
-
if (columnsToAdd.length) {
|
|
70
|
-
await unaggAnswerSession.addColumns(columnsToAdd);
|
|
71
|
-
}
|
|
72
|
-
const columnsToRemove = [...currentColumns].filter((col) => !ouputColumnGuids.has(col));
|
|
73
|
-
if (columnsToRemove.length) {
|
|
74
|
-
await unaggAnswerSession.removeColumns(columnsToRemove);
|
|
75
|
-
}
|
|
76
|
-
return unaggAnswerSession.fetchData(offset, size);
|
|
77
|
-
}
|
|
78
|
-
async executeQuery(query, variables) {
|
|
79
|
-
const data = await graphqlQuery({
|
|
80
|
-
query,
|
|
81
|
-
variables: {
|
|
82
|
-
session: this.session,
|
|
83
|
-
...variables,
|
|
84
|
-
},
|
|
85
|
-
thoughtSpotHost: this.thoughtSpotHost,
|
|
86
|
-
isCompositeQuery: false,
|
|
87
|
-
});
|
|
88
|
-
this.session = (0, utils_1.deepMerge)(this.session, data.id);
|
|
89
|
-
return data;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.AnswerService = AnswerService;
|
|
93
|
-
/**
|
|
94
|
-
*
|
|
95
|
-
* @param root0
|
|
96
|
-
* @param root0.query
|
|
97
|
-
* @param root0.variables
|
|
98
|
-
* @param root0.thoughtSpotHost
|
|
99
|
-
* @param root0.isCompositeQuery
|
|
100
|
-
*/
|
|
101
|
-
async function graphqlQuery({ query, variables, thoughtSpotHost, isCompositeQuery = false, }) {
|
|
102
|
-
const operationName = (0, utils_1.getOperationNameFromQuery)(query);
|
|
103
|
-
try {
|
|
104
|
-
const response = await fetch(`${thoughtSpotHost}/prism/?op=${operationName}`, {
|
|
105
|
-
method: 'POST',
|
|
106
|
-
headers: {
|
|
107
|
-
'content-type': 'application/json;charset=UTF-8',
|
|
108
|
-
'x-requested-by': 'ThoughtSpot',
|
|
109
|
-
accept: '*/*',
|
|
110
|
-
'accept-language': 'en-us',
|
|
111
|
-
},
|
|
112
|
-
body: JSON.stringify({
|
|
113
|
-
operationName,
|
|
114
|
-
query,
|
|
115
|
-
variables,
|
|
116
|
-
}),
|
|
117
|
-
credentials: 'include',
|
|
118
|
-
});
|
|
119
|
-
const result = await response.json();
|
|
120
|
-
const dataValues = Object.values(result.data);
|
|
121
|
-
return (isCompositeQuery) ? result.data : dataValues[0];
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
return error;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
*
|
|
129
|
-
* @param sourceDetail
|
|
130
|
-
* @param colNames
|
|
131
|
-
*/
|
|
132
|
-
function getGuidsFromColumnNames(sourceDetail, colNames) {
|
|
133
|
-
const cols = sourceDetail.columns.reduce((colSet, col) => {
|
|
134
|
-
colSet[col.name] = col;
|
|
135
|
-
return colSet;
|
|
136
|
-
}, {});
|
|
137
|
-
return new Set(colNames.map((colName) => {
|
|
138
|
-
const col = cols[colName];
|
|
139
|
-
return col.id;
|
|
140
|
-
}));
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=answerService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"answerService.js","sourceRoot":"","sources":["../../../../src/utils/answerService/answerService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=answerService.spec.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"answerService.spec.d.ts","sourceRoot":"","sources":["../../../../src/utils/answerService/answerService.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=answerService.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"answerService.spec.js","sourceRoot":"","sources":["../../../../src/utils/answerService/answerService.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export declare const getUnaggregatedAnswerSession: string;
|
|
2
|
-
export declare const removeColumns: string;
|
|
3
|
-
export declare const addColumns: string;
|
|
4
|
-
export declare const getAnswerData: string;
|
|
5
|
-
export declare const getSourceDetail = "\n query GetSourceDetail($ids: [GUID!]!) {\n getSourceDetailById(ids: $ids, type: LOGICAL_TABLE) {\n id\n name\n description\n authorName\n authorDisplayName\n isExternal\n type\n created\n modified\n columns {\n id\n name\n author\n authorDisplayName\n description\n dataType\n type\n modified\n ownerName\n owner\n dataRecency\n sources {\n tableId\n tableName\n columnId\n columnName\n __typename\n }\n synonyms\n cohortAnswerId\n __typename\n }\n relationships\n destinationRelationships\n dataSourceId\n __typename\n }\n } \n";
|
|
6
|
-
//# sourceMappingURL=graphql-queries.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-queries.d.ts","sourceRoot":"","sources":["../../../../src/utils/answerService/graphql-queries.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,4BAA4B,QAsBxC,CAAC;AAEF,eAAO,MAAM,aAAa,QAUrB,CAAC;AAEN,eAAO,MAAM,UAAU,QAMlB,CAAC;AAEN,eAAO,MAAM,aAAa,QAwBzB,CAAC;AAEF,eAAO,MAAM,eAAe,43BAyC3B,CAAC"}
|