@thoughtspot/visual-embed-sdk 1.26.6 → 1.26.7
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/README.md +2 -2
- package/cjs/package.json +1 -1
- package/cjs/src/auth.d.ts +4 -4
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +16 -9
- package/cjs/src/auth.js.map +1 -1
- package/cjs/src/embed/app.d.ts +15 -15
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +4 -3
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +5 -4
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/base.d.ts +1 -1
- package/cjs/src/embed/base.d.ts.map +1 -1
- package/cjs/src/embed/base.js +9 -6
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/base.spec.js +4 -3
- package/cjs/src/embed/base.spec.js.map +1 -1
- package/cjs/src/embed/embed.spec.js +2 -1
- package/cjs/src/embed/embed.spec.js.map +1 -1
- package/cjs/src/embed/embedConfig.d.ts +2 -1
- package/cjs/src/embed/embedConfig.d.ts.map +1 -1
- package/cjs/src/embed/embedConfig.js +2 -0
- package/cjs/src/embed/embedConfig.js.map +1 -1
- package/cjs/src/embed/events.spec.js +3 -2
- package/cjs/src/embed/events.spec.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +35 -23
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +8 -4
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +2 -1
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +48 -30
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +7 -6
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/sage.spec.js +3 -3
- package/cjs/src/embed/sage.spec.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +22 -6
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +35 -16
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +10 -6
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +10 -0
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +2 -1
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +45 -22
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +153 -32
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +2 -2
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +2 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +2 -1
- package/cjs/src/mixpanel-service.js.map +1 -1
- package/cjs/src/react/index.d.ts +1 -1
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +2 -1
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +2 -2
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/types.d.ts +742 -237
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +653 -169
- 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 +3 -2
- package/cjs/src/utils/authService/authService.js.map +1 -1
- package/cjs/src/utils/authService/authService.spec.js +3 -2
- package/cjs/src/utils/authService/authService.spec.js.map +1 -1
- package/cjs/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
- package/cjs/src/utils/authService/tokenizedAuthService.js +2 -1
- package/cjs/src/utils/authService/tokenizedAuthService.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.d.ts +2 -4
- package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.js +2 -4
- package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/cjs/src/utils/logger.d.ts +18 -0
- package/cjs/src/utils/logger.d.ts.map +1 -0
- package/cjs/src/utils/logger.js +80 -0
- package/cjs/src/utils/logger.js.map +1 -0
- package/cjs/src/utils/logger.spec.d.ts +25 -0
- package/cjs/src/utils/logger.spec.d.ts.map +1 -0
- package/cjs/src/utils/logger.spec.js +116 -0
- package/cjs/src/utils/logger.spec.js.map +1 -0
- package/cjs/src/utils/processData.d.ts +6 -0
- package/cjs/src/utils/processData.d.ts.map +1 -1
- package/cjs/src/utils/processData.js +5 -1
- package/cjs/src/utils/processData.js.map +1 -1
- package/cjs/src/utils/processTrigger.js +1 -1
- package/dist/src/auth.d.ts +4 -4
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +15 -15
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts +1 -1
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/embedConfig.d.ts +2 -1
- package/dist/src/embed/embedConfig.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +35 -23
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +48 -30
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +22 -6
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +35 -16
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +2 -1
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +1 -1
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +742 -237
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/authService/authService.d.ts.map +1 -1
- package/dist/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answerService.d.ts +2 -4
- package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/dist/src/utils/logger.d.ts +18 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.spec.d.ts +25 -0
- package/dist/src/utils/logger.spec.d.ts.map +1 -0
- package/dist/src/utils/processData.d.ts +6 -0
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +3716 -3107
- package/dist/tsembed-react.js +3620 -3012
- package/dist/tsembed.es.js +9830 -9212
- package/dist/tsembed.js +15079 -14462
- package/dist/visual-embed-sdk-react-full.d.ts +923 -332
- package/dist/visual-embed-sdk-react.d.ts +923 -332
- package/dist/visual-embed-sdk.d.ts +923 -332
- package/lib/package.json +1 -1
- package/lib/src/auth.d.ts +4 -4
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +17 -10
- package/lib/src/auth.js.map +1 -1
- package/lib/src/embed/app.d.ts +15 -15
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +4 -3
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +5 -4
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts +1 -1
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js +9 -6
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/base.spec.js +5 -4
- package/lib/src/embed/base.spec.js.map +1 -1
- package/lib/src/embed/embed.spec.js +2 -1
- package/lib/src/embed/embed.spec.js.map +1 -1
- package/lib/src/embed/embedConfig.d.ts +2 -1
- package/lib/src/embed/embedConfig.d.ts.map +1 -1
- package/lib/src/embed/embedConfig.js +2 -0
- package/lib/src/embed/embedConfig.js.map +1 -1
- package/lib/src/embed/events.spec.js +3 -2
- package/lib/src/embed/events.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +35 -23
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +8 -4
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +2 -1
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts +48 -30
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +7 -6
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/sage.spec.js +3 -3
- package/lib/src/embed/sage.spec.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +22 -6
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +35 -16
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +11 -7
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +10 -0
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +2 -1
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +48 -25
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +153 -32
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +2 -2
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -2
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +2 -1
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/react/index.d.ts +1 -1
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +1 -1
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +2 -2
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/types.d.ts +742 -237
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +652 -168
- 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 +3 -2
- package/lib/src/utils/authService/authService.js.map +1 -1
- package/lib/src/utils/authService/authService.spec.js +4 -3
- package/lib/src/utils/authService/authService.spec.js.map +1 -1
- package/lib/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
- package/lib/src/utils/authService/tokenizedAuthService.js +2 -1
- package/lib/src/utils/authService/tokenizedAuthService.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.d.ts +2 -4
- package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.js +2 -4
- package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/lib/src/utils/logger.d.ts +18 -0
- package/lib/src/utils/logger.d.ts.map +1 -0
- package/lib/src/utils/logger.js +74 -0
- package/lib/src/utils/logger.js.map +1 -0
- package/lib/src/utils/logger.spec.d.ts +25 -0
- package/lib/src/utils/logger.spec.d.ts.map +1 -0
- package/lib/src/utils/logger.spec.js +93 -0
- package/lib/src/utils/logger.spec.js.map +1 -0
- package/lib/src/utils/processData.d.ts +6 -0
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +4 -1
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/processTrigger.js +1 -1
- package/lib/src/visual-embed-sdk.d.ts +927 -336
- package/package.json +1 -1
- package/src/auth.ts +20 -13
- package/src/embed/app.spec.ts +5 -4
- package/src/embed/app.ts +23 -22
- package/src/embed/base.spec.ts +6 -5
- package/src/embed/base.ts +18 -11
- package/src/embed/embed.spec.ts +2 -1
- package/src/embed/embedConfig.ts +2 -0
- package/src/embed/events.spec.ts +3 -2
- package/src/embed/liveboard.spec.ts +2 -1
- package/src/embed/liveboard.ts +43 -27
- package/src/embed/sage.spec.ts +3 -3
- package/src/embed/sage.ts +54 -36
- package/src/embed/search-bar.tsx +22 -6
- package/src/embed/search.spec.ts +13 -0
- package/src/embed/search.ts +46 -21
- package/src/embed/ts-embed.spec.ts +182 -43
- package/src/embed/ts-embed.ts +78 -59
- package/src/index.ts +2 -0
- package/src/mixpanel-service.ts +2 -1
- package/src/react/index.spec.tsx +2 -2
- package/src/react/index.tsx +1 -0
- package/src/types.ts +753 -245
- package/src/utils/authService/authService.spec.ts +7 -6
- package/src/utils/authService/authService.ts +4 -2
- package/src/utils/authService/tokenizedAuthService.ts +2 -1
- package/src/utils/graphql/answerService/answerService.ts +2 -4
- package/src/utils/logger.spec.ts +108 -0
- package/src/utils/logger.ts +88 -0
- package/src/utils/processData.ts +4 -1
- package/src/utils/processTrigger.ts +1 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
EndPoints,
|
|
3
|
+
fetchAuthPostService,
|
|
4
4
|
fetchAuthService,
|
|
5
|
+
fetchAuthTokenService,
|
|
5
6
|
fetchBasicAuthService,
|
|
6
|
-
|
|
7
|
+
fetchSessionInfoService,
|
|
7
8
|
verifyTokenService,
|
|
8
|
-
EndPoints,
|
|
9
9
|
} from '.';
|
|
10
|
+
import { logger } from '../logger';
|
|
10
11
|
|
|
11
12
|
const thoughtSpotHost = 'http://10.79.135.124:3000';
|
|
12
13
|
|
|
@@ -74,14 +75,14 @@ describe('Unit test for authService', () => {
|
|
|
74
75
|
});
|
|
75
76
|
|
|
76
77
|
test('log error on API failures', async () => {
|
|
77
|
-
jest.spyOn(
|
|
78
|
+
jest.spyOn(logger, 'error').mockImplementation(() => undefined);
|
|
78
79
|
global.fetch = jest.fn(() => Promise.resolve({
|
|
79
80
|
text: () => Promise.resolve('error'),
|
|
80
81
|
status: 500,
|
|
81
82
|
ok: false,
|
|
82
83
|
}));
|
|
83
84
|
await fetchSessionInfoService(authVerificationUrl);
|
|
84
|
-
expect(
|
|
85
|
+
expect(logger.error).toHaveBeenCalledWith('Failure', 'error');
|
|
85
86
|
});
|
|
86
87
|
|
|
87
88
|
test('verifyTokenService', async () => {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { logger } from '../logger';
|
|
2
|
+
|
|
1
3
|
export const EndPoints = {
|
|
2
4
|
AUTH_VERIFICATION: '/callosum/v1/session/info',
|
|
3
5
|
SAML_LOGIN_TEMPLATE: (targetUrl: string) => `/callosum/v1/saml/login?targetURLPath=${targetUrl}`,
|
|
@@ -18,7 +20,7 @@ export const EndPoints = {
|
|
|
18
20
|
function failureLoggedFetch(url: string, options: RequestInit = {}): Promise<Response> {
|
|
19
21
|
return fetch(url, options).then(async (r) => {
|
|
20
22
|
if (!r.ok && r.type !== 'opaqueredirect' && r.type !== 'opaque') {
|
|
21
|
-
|
|
23
|
+
logger.error('Failure', await r.text?.());
|
|
22
24
|
}
|
|
23
25
|
return r;
|
|
24
26
|
});
|
|
@@ -45,7 +47,7 @@ export async function verifyTokenService(
|
|
|
45
47
|
});
|
|
46
48
|
return res.ok;
|
|
47
49
|
} catch (e) {
|
|
48
|
-
|
|
50
|
+
logger.error(`Token Verification Service failed : ${e.message}`);
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
return false;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { tokenizedFetch } from '../../tokenizedFetch';
|
|
2
|
+
import { logger } from '../logger';
|
|
2
3
|
import { EndPoints } from './authService';
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -9,7 +10,7 @@ import { EndPoints } from './authService';
|
|
|
9
10
|
function tokenisedFailureLoggedFetch(url: string, options: RequestInit = {}): Promise<Response> {
|
|
10
11
|
return tokenizedFetch(url, options).then(async (r) => {
|
|
11
12
|
if (!r.ok && r.type !== 'opaqueredirect' && r.type !== 'opaque') {
|
|
12
|
-
|
|
13
|
+
logger.error('Failure', await r.text?.());
|
|
13
14
|
}
|
|
14
15
|
return r;
|
|
15
16
|
});
|
|
@@ -37,8 +37,7 @@ interface UnderlyingDataPoint {
|
|
|
37
37
|
* const data = await underlying.fetchData(0, 100);
|
|
38
38
|
* })
|
|
39
39
|
* ```
|
|
40
|
-
* @version
|
|
41
|
-
* ThoughtSpot: 9.9.0.cl / SDK: 1.25.0
|
|
40
|
+
* @version SDK: 1.25.0| ThoughtSpot: 9.10.0.cl
|
|
42
41
|
* @group Events
|
|
43
42
|
*/
|
|
44
43
|
export class AnswerService {
|
|
@@ -129,8 +128,7 @@ export class AnswerService {
|
|
|
129
128
|
* const data = await underlying.fetchData(0, 100);
|
|
130
129
|
* })
|
|
131
130
|
* ```
|
|
132
|
-
* @version
|
|
133
|
-
* ThoughtSpot: 9.9.0.cl / SDK: 1.25.0
|
|
131
|
+
* @version SDK: 1.25.0| ThoughtSpot: 9.10.0.cl
|
|
134
132
|
*/
|
|
135
133
|
public async getUnderlyingDataForPoint(
|
|
136
134
|
outputColumnNames: string[],
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
let logger: any;
|
|
2
|
+
let LogLevel: any;
|
|
3
|
+
let setGlobalLogLevelOverride: any;
|
|
4
|
+
|
|
5
|
+
const consoleErrorSpy = jest.spyOn(console, 'error');
|
|
6
|
+
const consoleWarnSpy = jest.spyOn(console, 'warn');
|
|
7
|
+
const consoleInfoSpy = jest.spyOn(console, 'info');
|
|
8
|
+
const consoleDebugSpy = jest.spyOn(console, 'debug');
|
|
9
|
+
const consoleTraceSpy = jest.spyOn(console, 'trace');
|
|
10
|
+
|
|
11
|
+
describe('Logger', () => {
|
|
12
|
+
beforeAll(async () => {
|
|
13
|
+
const a = await import('./logger');
|
|
14
|
+
logger = a.logger;
|
|
15
|
+
LogLevel = a.LogLevel;
|
|
16
|
+
setGlobalLogLevelOverride = a.setGlobalLogLevelOverride;
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
// Reset the logger's log level before each test
|
|
21
|
+
setGlobalLogLevelOverride(LogLevel.TRACE);
|
|
22
|
+
logger.setLogLevel(LogLevel.ERROR);
|
|
23
|
+
|
|
24
|
+
consoleErrorSpy.mockRestore();
|
|
25
|
+
consoleWarnSpy.mockRestore();
|
|
26
|
+
consoleInfoSpy.mockRestore();
|
|
27
|
+
consoleDebugSpy.mockRestore();
|
|
28
|
+
consoleTraceSpy.mockRestore();
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('should set the log level correctly', () => {
|
|
32
|
+
logger.setLogLevel(LogLevel.INFO);
|
|
33
|
+
expect(logger.getLogLevel()).toBe(LogLevel.INFO);
|
|
34
|
+
|
|
35
|
+
logger.setLogLevel(LogLevel.DEBUG);
|
|
36
|
+
expect(logger.getLogLevel()).toBe(LogLevel.DEBUG);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('should log messages based on the log level', () => {
|
|
40
|
+
setGlobalLogLevelOverride(undefined);
|
|
41
|
+
|
|
42
|
+
logger.setLogLevel(LogLevel.SILENT);
|
|
43
|
+
logger.logMessages(['log me'], LogLevel.SILENT);
|
|
44
|
+
logger.error('Error message');
|
|
45
|
+
logger.warn('Warning message');
|
|
46
|
+
logger.debug('Debug message');
|
|
47
|
+
expect(consoleErrorSpy).not.toHaveBeenCalled();
|
|
48
|
+
expect(consoleWarnSpy).not.toHaveBeenCalled();
|
|
49
|
+
expect(consoleDebugSpy).not.toHaveBeenCalled();
|
|
50
|
+
|
|
51
|
+
logger.setLogLevel(LogLevel.ERROR);
|
|
52
|
+
logger.error('Error message');
|
|
53
|
+
logger.warn('Warning message');
|
|
54
|
+
logger.debug('Debug message');
|
|
55
|
+
expect(consoleErrorSpy).toHaveBeenCalledWith('Error message');
|
|
56
|
+
expect(consoleWarnSpy).not.toHaveBeenCalled();
|
|
57
|
+
expect(consoleDebugSpy).not.toHaveBeenCalled();
|
|
58
|
+
|
|
59
|
+
logger.error('Warning message');
|
|
60
|
+
logger.warn('Warning message');
|
|
61
|
+
logger.debug('Debug message');
|
|
62
|
+
expect(consoleTraceSpy).not.toHaveBeenCalled();
|
|
63
|
+
|
|
64
|
+
logger.setLogLevel(LogLevel.WARN);
|
|
65
|
+
logger.error('Warning message');
|
|
66
|
+
logger.warn('Warning message');
|
|
67
|
+
logger.debug('Debug message');
|
|
68
|
+
expect(consoleErrorSpy).toHaveBeenCalledWith('Warning message');
|
|
69
|
+
expect(consoleWarnSpy).toHaveBeenCalledWith('Warning message');
|
|
70
|
+
expect(consoleDebugSpy).not.toHaveBeenCalled();
|
|
71
|
+
|
|
72
|
+
logger.setLogLevel(LogLevel.DEBUG);
|
|
73
|
+
logger.error('Warning message');
|
|
74
|
+
logger.warn('Warning message');
|
|
75
|
+
logger.debug('Debug message');
|
|
76
|
+
expect(consoleErrorSpy).toHaveBeenCalledWith('Warning message');
|
|
77
|
+
expect(consoleWarnSpy).toHaveBeenCalledWith('Warning message');
|
|
78
|
+
expect(consoleDebugSpy).toHaveBeenCalledWith('Debug message');
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('should log messages with the global log level override', () => {
|
|
82
|
+
setGlobalLogLevelOverride(LogLevel.WARN);
|
|
83
|
+
|
|
84
|
+
logger.error('Error message');
|
|
85
|
+
logger.warn('Warn message');
|
|
86
|
+
logger.info('Info message');
|
|
87
|
+
logger.trace('Trace message');
|
|
88
|
+
expect(consoleErrorSpy).toHaveBeenCalledWith('Error message');
|
|
89
|
+
expect(consoleWarnSpy).toHaveBeenCalledWith('Warn message');
|
|
90
|
+
expect(consoleInfoSpy).not.toHaveBeenCalled();
|
|
91
|
+
expect(consoleDebugSpy).not.toHaveBeenCalled();
|
|
92
|
+
expect(consoleTraceSpy).not.toHaveBeenCalled();
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('If global level is not set , default local level (error) should be used', () => {
|
|
96
|
+
setGlobalLogLevelOverride(undefined);
|
|
97
|
+
|
|
98
|
+
logger.error('Error message');
|
|
99
|
+
logger.warn('Warn message');
|
|
100
|
+
logger.info('Info message');
|
|
101
|
+
logger.trace('Trace message');
|
|
102
|
+
expect(consoleErrorSpy).toHaveBeenCalledWith('Error message');
|
|
103
|
+
expect(consoleWarnSpy).not.toHaveBeenCalled();
|
|
104
|
+
expect(consoleInfoSpy).not.toHaveBeenCalled();
|
|
105
|
+
expect(consoleDebugSpy).not.toHaveBeenCalled();
|
|
106
|
+
expect(consoleTraceSpy).not.toHaveBeenCalled();
|
|
107
|
+
});
|
|
108
|
+
});
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import isUndefined from 'lodash/isUndefined';
|
|
2
|
+
import noop from 'lodash/noop';
|
|
3
|
+
import { LogLevel } from '../types';
|
|
4
|
+
|
|
5
|
+
const logFunctions: {
|
|
6
|
+
[key: string]: (...args: any[]) => void;
|
|
7
|
+
} = {
|
|
8
|
+
[LogLevel.SILENT]: noop,
|
|
9
|
+
[LogLevel.ERROR]: console.error,
|
|
10
|
+
[LogLevel.WARN]: console.warn,
|
|
11
|
+
[LogLevel.INFO]: console.info,
|
|
12
|
+
[LogLevel.DEBUG]: console.debug,
|
|
13
|
+
[LogLevel.TRACE]: console.trace,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
let globalLogLevelOverride: LogLevel = LogLevel.TRACE;
|
|
17
|
+
const setGlobalLogLevelOverride = (logLevel: LogLevel): void => {
|
|
18
|
+
globalLogLevelOverride = logLevel;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const logLevelToNumber: { [key: string]: number } = {
|
|
22
|
+
[LogLevel.SILENT]: 0,
|
|
23
|
+
[LogLevel.ERROR]: 1,
|
|
24
|
+
[LogLevel.WARN]: 2,
|
|
25
|
+
[LogLevel.INFO]: 3,
|
|
26
|
+
[LogLevel.DEBUG]: 4,
|
|
27
|
+
[LogLevel.TRACE]: 5,
|
|
28
|
+
};
|
|
29
|
+
const compareLogLevels = (logLevel1: LogLevel, logLevel2: LogLevel): number => {
|
|
30
|
+
const logLevel1Index = logLevelToNumber[logLevel1];
|
|
31
|
+
const logLevel2Index = logLevelToNumber[logLevel2];
|
|
32
|
+
return logLevel1Index - logLevel2Index;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
class Logger {
|
|
36
|
+
private logLevel: LogLevel = LogLevel.ERROR;
|
|
37
|
+
|
|
38
|
+
public setLogLevel = (newLogLevel: LogLevel): void => {
|
|
39
|
+
this.logLevel = newLogLevel;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
public getLogLevel = (): LogLevel => this.logLevel;
|
|
43
|
+
|
|
44
|
+
public canLog(logLevel: LogLevel): boolean {
|
|
45
|
+
if (logLevel === LogLevel.SILENT) return false;
|
|
46
|
+
if (!isUndefined(globalLogLevelOverride)) {
|
|
47
|
+
return compareLogLevels(globalLogLevelOverride, logLevel) >= 0;
|
|
48
|
+
}
|
|
49
|
+
return compareLogLevels(this.logLevel, logLevel) >= 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public logMessages(args: any[], logLevel: LogLevel): void {
|
|
53
|
+
if (this.canLog(logLevel)) {
|
|
54
|
+
const logFn = logFunctions[logLevel];
|
|
55
|
+
if (logFn) {
|
|
56
|
+
logFn(...args);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public log(...args: any[]): void {
|
|
62
|
+
this.info(args);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public info(...args: any[]): void {
|
|
66
|
+
this.logMessages(args, LogLevel.INFO);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public debug(...args: any[]): void {
|
|
70
|
+
this.logMessages(args, LogLevel.DEBUG);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public trace(...args: any[]): void {
|
|
74
|
+
this.logMessages(args, LogLevel.TRACE);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public error(...args: any[]): void {
|
|
78
|
+
this.logMessages(args, LogLevel.ERROR);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
public warn(...args: any[]): void {
|
|
82
|
+
this.logMessages(args, LogLevel.WARN);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const logger = new Logger();
|
|
87
|
+
|
|
88
|
+
export { LogLevel, logger, setGlobalLogLevelOverride };
|
package/src/utils/processData.ts
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
import { AuthFailureType, initSession } from '../auth';
|
|
9
9
|
import { AuthType, CustomActionPayload, EmbedEvent } from '../types';
|
|
10
10
|
import { AnswerService } from './graphql/answerService/answerService';
|
|
11
|
+
import { resetCachedAuthToken } from '../authToken';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
*
|
|
@@ -77,13 +78,14 @@ function processNoCookieAccess(e: any, containerEl: Element) {
|
|
|
77
78
|
* @param e
|
|
78
79
|
* @param containerEl
|
|
79
80
|
*/
|
|
80
|
-
function processAuthFailure(e: any, containerEl: Element) {
|
|
81
|
+
export function processAuthFailure(e: any, containerEl: Element) {
|
|
81
82
|
const { loginFailedMessage, authType } = getEmbedConfig();
|
|
82
83
|
if (authType !== AuthType.None) {
|
|
83
84
|
// eslint-disable-next-line no-param-reassign
|
|
84
85
|
containerEl.innerHTML = loginFailedMessage;
|
|
85
86
|
notifyAuthFailure(AuthFailureType.OTHER);
|
|
86
87
|
}
|
|
88
|
+
resetCachedAuthToken();
|
|
87
89
|
return e;
|
|
88
90
|
}
|
|
89
91
|
|
|
@@ -96,6 +98,7 @@ function processAuthLogout(e: any, containerEl: Element) {
|
|
|
96
98
|
const { loginFailedMessage } = getEmbedConfig();
|
|
97
99
|
// eslint-disable-next-line no-param-reassign
|
|
98
100
|
containerEl.innerHTML = loginFailedMessage;
|
|
101
|
+
resetCachedAuthToken();
|
|
99
102
|
disableAutoLogin();
|
|
100
103
|
notifyLogout();
|
|
101
104
|
return e;
|